[darcs-users] bugs in darcs 0.9.17 (or earlier)

David Roundy droundy at abridgegame.org
Wed Mar 3 13:17:37 UTC 2004

On Wed, Mar 03, 2004 at 09:18:32AM +1100, Tim Barbour wrote:
> Hi,
> I have recently encountered three bugs in darcs. I am currently running
> 0.9.17, but was running an earlier version (0.9.16 ?) when one of the
> problems began.
> First, darcs does not seem to have any "quiet" option (e.g. '-q'), to
> suppress informational messages in contexts where they are unwelcome.

I've added a --quiet option to push, and the infrastructure is there for
easily adding it to other commands, so suggestions of commands to add it to
are welcome.

> darcs push --repodir $local_repo/$p -a --and-apply $r/$p > /dev/null
> - note the redirection of stdout to /dev/null. I had to do this to get
> rid of its chatter (since I ran this script from cron, any output would
> be mailed to me). Recently the script was mysteriously failing, with no
> error message, since the error message (on stdout) had gone to /dev/null.
> Third, the push above fails for one of my repositories, like this:

Thanks for the bug report (and for giving me all the info needed to
reproduce it)!

It turns out to be a bug in remove that caused the problem.  Remove happily
(well, at least silently) removes directories without removing their
contents.  This is bad, since it results in a corrupt repository.  In your
case the two relevant patches are these (which are in your "pmm"
repository, not the "pmm-darcs-bug":

Sat Jan  3 01:04:01 EST 2004  trb at categorical.net
  * remove_kernel_abstraction_directory_second_attempt
  I forgot to adjust the Makefile, but darcs seems to have overlooked the removal of sub-directories, and also offered to remove the kernel_abstraction directory for the second time.
Sat Jan  3 00:56:44 EST 2004  trb at categorical.net
  * remove_kernel_abstraction_directory
  Given that klunk has a kernel-abstraction layer, there is no clear reason for pmm to have one of its own.

The first one (listed second) removes the kernel_abstraction directory, but
doesn't remove its contents, which causes the second one to fail because it
also tries to remove kernel_abstraction (along with its contents).  The
easiest way to fix your repository (and this is a really nasty kind of repo
bug, since darcs check doesn't recognize it--another bug I must fix) is to
edit (in a copy, of course) the _darcs/inventory file and remove the
"remove_kernel_abstraction_directory" patch.  At the moment, the corruption
is harmless, as it is in effect fossilized in an old patch (as long as one
doesn't try to push that old patch, which is how you saw the problem), but
it's definitely worth fixing.  Another possibility would be to edit the
"remove_kernel_abstraction_directory" patch itself and take out the rmdir
(leaving it as an empty change).  This latter option is cleaner and nicer,
but a bit more of a pain... you'll probably find it easiest to zgrep in
_darcs/patches to find which file to edit.

I don't have time today (must get ready for work), but hopefully tomorrow
I'll fix these two bugs.  Thanks again for the bug report, these are two
rather nasty bugs one of which has the effect of hiding the other!
David Roundy

More information about the darcs-users mailing list