darcs

Issue 157 Pulling rollbacks messes up dependencies

Title Pulling rollbacks messes up dependencies
Priority bug Status resolved
Milestone Resolved in
Superseder Nosy List darcs-devel, dmitry.kurochkin, kowey, markstos, thorkilnaur, tommy
Assigned To
Topics

Created on 2006-04-10.19:32:56 by markstos, last changed 2009-08-27.14:04:15 by admin.

Messages
msg613 (view) Author: markstos Date: 2006-04-10.19:32:54
( This is an import of bug #165 from the old system. There is still a TODO
test for it in pull.pl, indicating it is still present. )

> There is a workaround: Create a temp repo with 'darcs get
> --to-patch roll_me_back' and rollback the patch there, which
> will obviously succeed. Then pull the rollback patch back.
> If there were any real dependency problems, the pull will
> cause some conflicts. Just resolve the conflicts and be happy.

Ick! This triggers a more severe bug. Darcs applies the inverse
patches in the wrong order (B^-1 then C^-1), causing those parts of B
which are modified by C to be mysteriously resurrected.

#!/bin/sh
mkdir r1
cd r1
darcs init
echo a > foo
darcs record -lam A
echo b > foo
darcs record --ignore-times -lam B
echo c > foo
darcs record --ignore-times -lam C
echo -n y | darcs rollback -p C
cd ..
darcs get --to-patch B r1 r2
cd r2
echo -n y | darcs rollback -p B
echo y | darcs revert -a
darcs pull -a ../r1
cat foo
# foo contains 'b' rather than 'a'

Download (untitled) 861b
#  	   	Wed Mar 09 21:57:56 2005  	markjugg - Reference to ticket #251 added 	  	 
#  	   	Wed Mar 09 22:20:11 2005  	markjugg - AdminCc markjugg added 	  	 
#  	   	Wed Mar 09 22:20:31 2005  	markjugg - Severity Normal changed to Important 	  	 
#  	   	Wed Mar 09 22:22:59 2005  	markjugg - Correspondence added 	  	 [Reply] [Comment]

RT-Send-CC: droundy

[guest - Thu Jan 06 08:15:23 2005]:
> > There is a workaround: Create a temp repo with 'darcs get
> > --to-patch roll_me_back' and rollback the patch there, which
> > will obviously succeed. Then pull the rollback patch back.
> > If there were any real dependency problems, the pull will
> > cause some conflicts. Just resolve the conflicts and be happy.
>
> Ick! This triggers a more severe bug. Darcs applies the inverse
> patches in the wrong order (B^-1 then C^-1), causing those parts of B
> which are modified by C to be mysteriously resurrected.

I just confirmed this bug still exists in the current darcs, thanks to
the handy test script.

I have added a TODO test for this now to the test suite for better
tracking of it. The patch includes RT#165 in the name.

I also bumped up the priority to Important.

Mark
msg2574 (view) Author: markstos Date: 2008-01-19.04:46:07
I'm pleased to see that with the following test sequence, this issue is resolved
in unstable, when using the --darcs-2 format. I just 'sent'
test/rollback_conflict.pl which adds the below testing sequence as a regression
test.
History
Date User Action Args
2006-04-10 19:32:56markstoscreate
2006-05-13 19:06:18droundysetnosy: droundy, tommy, markstos
2007-08-06 08:31:58koweylinkissue436 superseder
2008-01-11 04:07:43markstoslinkissue547 superseder
2008-01-13 15:49:11markstoslinkissue66 superseder
2008-01-18 02:57:29markstosunlinkissue547 superseder
2008-01-18 03:01:01markstosunlinkissue436 superseder
2008-01-19 04:46:08markstossetstatus: unread -> resolved-in-unstable
nosy: + beschmi, kowey
messages: + msg2574
2008-09-04 21:28:16adminsetstatus: resolved-in-unstable -> resolved
nosy: + dagit
2009-08-06 17:38:19adminsetnosy: + jast, Serware, dmitry.kurochkin, darcs-devel, zooko, mornfall, simon, thorkilnaur, - droundy
2009-08-06 20:49:30adminsetnosy: - beschmi
2009-08-10 21:44:50adminsetnosy: - darcs-devel, zooko, jast, Serware, mornfall
2009-08-10 23:53:47adminsetnosy: - dagit
2009-08-25 17:51:56adminsetnosy: + darcs-devel, - simon
2009-08-27 14:04:15adminsetnosy: tommy, kowey, markstos, darcs-devel, thorkilnaur, dmitry.kurochkin