[darcs-users] bug report: "push" hangs indefinitely

David Roundy droundy at abridgegame.org
Tue Sep 21 11:37:19 UTC 2004


On Mon, Sep 20, 2004 at 01:35:58PM -0300, Zooko Wilcox-O'Hearn wrote:
> http://zooko.com/shtoom-hang-repo.tar.bz2
> 
> Push from a to b and it will take at least an hour, and possibly an 
> infinity.
> 
> This is a distressingly common.  The answer I get from this list is 
> "This is because of [complicated theoretical thing I don't understand], 
> and it might be fixed sometime after v1.0.".  This is a rather 
> unsatisfying answer.  Perhaps it would be somewhat more satisfying if 
> it included a workaround to implement when this occurs, or a pattern of 
> usage to embrace which would prevent this from occurring.

To put it more simply, this problem is caused by large conflicting changes.
The way to avoid this is to try to avoid merge conflicts (which usually a
good idea anyways).  The ugly workaround when it happens is first to figure
out what the conflict was, and then to unrecord one of the conflicting
patches.  The nice workaround (which may not work in cases of truly large
conflicts involving many primitive patches) is to simply resolve the
conflicts when they occur.

In this case, you have to patches

Mon Sep 13 12:40:28 EDT 2004  zooko at zooko.com
  * init

and

Fri Sep 17 16:37:40 EDT 2004  zooko at zooko.com
  * init shtoom.ui.select

both of which create the directory ./shtoom/shtoom/ui/ and the file
./shtoom/shtoom/ui/select.py.  This is a complicated conflict, because of
course you can't create the file unless you've first created the directory,
but there was a conflict on creating the directory.

So you could unrecord one of those two patches, but it's much easier if you
notice when you have the conflict.  Now there are patches which depend on
the conflicted patches, which will also need to be unrecorded.  And of
course, the conflicts slow everything down.  :(

There was a bug in push which caused it not to announce conflicts when they
happen as pull does.  This may have lead to this problem.  I should also
make the --summary output announce conflicts.  Currently it just ignores
conflicts, which is not helpful!



I think the solution for your two repos a and b is to unrecord the
following patches:

in b:

Fri Sep 17 16:37:57 EDT 2004  zooko at zooko.com
  * catch Tkinter exception so that ui selection can proceed

Fri Sep 17 16:37:40 EDT 2004  zooko at zooko.com
  * init shtoom.ui.select

in a:

Mon Sep 13 12:42:17 EDT 2004  zooko at zooko.com
  * typo fix

Fri Sep 17 16:37:40 EDT 2004  zooko at zooko.com
  * init shtoom.ui.select

You should (of course) do this in a copy, and then will need to record
again any fixes that 

Alas, there seems to be a bug in unrecord that shows up when unrecording
patches that have conficts in them.  A workaround is to delete
_darcs/patches/pending after unrecording (provided it was empty before
unrecording).  I'll track this bug down tomorrow.
-- 
David Roundy
http://www.abridgegame.org




More information about the darcs-users mailing list