Forgot the subject before. Whoops. It turns out my test case was too simple, and this was a pathological case for the diff/patch step, because there wasn't any context. I'm still not sure why the text from 1.1.2.1 ends up in the conflict section in the merged result, but that's likely not a cvs problem.
tyler On Wed, Apr 21, 2004 at 03:06:48PM -0700, Tyler wrote: > Sorry this is long, but i'm hoping this is an instructive example. > > I'm trying to take the delta between two revisions of a file on a branch > and merge that delta onto the trunk. This doesn't seem to work: > > [EMAIL PROTECTED]:~/src/sandbox/troscoe]$ cvs status test > =================================================================== > File: test Status: Up-to-date > > Working revision: 1.1 > Repository revision: 1.1 /cvsroot/sandbox/troscoe/test,v > Sticky Tag: (none) > Sticky Date: (none) > Sticky Options: (none) > > [EMAIL PROTECTED]:~/src/sandbox/troscoe]$ cvs up -j1.1.2.1 -j1.1.2.2 test > RCS file: /cvsroot/sandbox/troscoe/test,v > retrieving revision 1.1.2.1 > retrieving revision 1.1.2.2 > Merging differences between 1.1.2.1 and 1.1.2.2 into test > rcsmerge: warning: conflicts during merge > > [EMAIL PROTECTED]:~/src/sandbox/troscoe]$ cat test > trunk line 1 > <<<<<<< test > ======= > branch line 1 > branch line 2 > >>>>>>> 1.1.2.2 > > > > Two questions: > > 1. Why is a conflict being generated, especially considering that the > top half of the conflict is with nothing. > > 2. Why does "branch line 1" (from 1.1.2.1) come along for the ride when > i do this merge? > > > Here's a painfully complete picture of the test environment: > > ### set up a simple test file > > [EMAIL PROTECTED]:~/src/sandbox/troscoe]$ echo "trunk line 1" > test > > [EMAIL PROTECTED]:~/src/sandbox/troscoe]$ cvs add test > cvs add: use 'cvs commit' to add this file permanently > > [EMAIL PROTECTED]:~/src/sandbox/troscoe]$ cvs commit -m "test file initial revision" > test > RCS file: /cvsroot/sandbox/troscoe/test,v > done > Checking in test; > /cvsroot/sandbox/troscoe/test,v <-- test > initial revision: 1.1 > done > > > ### branch it > [EMAIL PROTECTED]:~/src/sandbox/troscoe]$ cvs tag -b BRANCH test > T test > > [EMAIL PROTECTED]:~/src/sandbox/troscoe]$ cvs up -rBRANCH test > > ### check in a couple changes on the branch > [EMAIL PROTECTED]:~/src/sandbox/troscoe]$ echo "branch line 1" >> test > > [EMAIL PROTECTED]:~/src/sandbox/troscoe]$ cvs commit -m"branch line 1" test > Checking in test; > /cvsroot/sandbox/troscoe/test,v <-- test > new revision: 1.1.2.1; previous revision: 1.1 > done > > [EMAIL PROTECTED]:~/src/sandbox/troscoe]$ echo "branch line 2" >> test > [EMAIL PROTECTED]:~/src/sandbox/troscoe]$ cvs commit -m"branch line 2" test > Checking in test; > /cvsroot/sandbox/troscoe/test,v <-- test > new revision: 1.1.2.2; previous revision: 1.1.2.1 > done > > ### so here's what things look like: > [EMAIL PROTECTED]:~/src/sandbox/troscoe]$ cvs up -r1.1 -p test > trunk line 1 > > [EMAIL PROTECTED]:~/src/sandbox/troscoe]$ cvs up -r1.1.2.1 -p test > trunk line 1 > branch line 1 > > [EMAIL PROTECTED]:~/src/sandbox/troscoe]$ cvs up -r1.1.2.2 -p test > trunk line 1 > branch line 1 > branch line 2 > > [EMAIL PROTECTED]:~/src/sandbox/troscoe]$ cvs diff -u -r1.1 -r1.1.2.1 test > Index: test > =================================================================== > RCS file: /cvsroot/sandbox/troscoe/test,v > retrieving revision 1.1 > retrieving revision 1.1.2.1 > diff -u -u -r1.1 -r1.1.2.1 > --- test 21 Apr 2004 20:56:40 -0000 1.1 > +++ test 21 Apr 2004 20:58:35 -0000 1.1.2.1 > @@ -1 +1,2 @@ > trunk line 1 > +branch line 1 > > [EMAIL PROTECTED]:~/src/sandbox/troscoe]$ cvs diff -u -r1.1.2.1 -r1.1.2.2 test > Index: test > =================================================================== > RCS file: /cvsroot/sandbox/troscoe/test,v > retrieving revision 1.1.2.1 > retrieving revision 1.1.2.2 > diff -u -u -r1.1.2.1 -r1.1.2.2 > --- test 21 Apr 2004 20:58:35 -0000 1.1.2.1 > +++ test 21 Apr 2004 20:59:51 -0000 1.1.2.2 > @@ -1,2 +1,3 @@ > trunk line 1 > branch line 1 > +branch line 2 > > ### i can merge any contiguous parts of the branch back down to the trunk > [EMAIL PROTECTED]:~/src/sandbox/troscoe]$ cvs status test > =================================================================== > File: test Status: Up-to-date > > Working revision: 1.1 > Repository revision: 1.1 /cvsroot/sandbox/troscoe/test,v > Sticky Tag: (none) > Sticky Date: (none) > Sticky Options: (none) > > [EMAIL PROTECTED]:~/src/sandbox/troscoe]$ cvs up -jBRANCH test > RCS file: /cvsroot/sandbox/troscoe/test,v > retrieving revision 1.1 > retrieving revision 1.1.2.2 > Merging differences between 1.1 and 1.1.2.2 into test > > [EMAIL PROTECTED]:~/src/sandbox/troscoe]$ cat test > trunk line 1 > branch line 1 > branch line 2 > > ### i can merge backwards to roll back a change > [EMAIL PROTECTED]:~/src/sandbox/troscoe]$ cvs status test > =================================================================== > File: test Status: Up-to-date > > Working revision: 1.1.2.2 > Repository revision: 1.1.2.2 /cvsroot/sandbox/troscoe/test,v > Sticky Tag: BRANCH (branch: 1.1.2) > Sticky Date: (none) > Sticky Options: (none) > > [EMAIL PROTECTED]:~/src/sandbox/troscoe]$ cvs up -j1.1.2.2 -j1.1.2.1 test > RCS file: /cvsroot/sandbox/troscoe/test,v > retrieving revision 1.1.2.2 > retrieving revision 1.1.2.1 > Merging differences between 1.1.2.2 and 1.1.2.1 into test > > [EMAIL PROTECTED]:~/src/sandbox/troscoe]$ cat test > trunk line 1 > branch line 1 > > ### and roll back some more > [EMAIL PROTECTED]:~/src/sandbox/troscoe]$ cvs up -j1.1.2.1 -j1.1 test > M test > RCS file: /cvsroot/sandbox/troscoe/test,v > retrieving revision 1.1.2.1 > retrieving revision 1.1 > Merging differences between 1.1.2.1 and 1.1 into test > [EMAIL PROTECTED]:~/src/sandbox/troscoe]$ cat test > trunk line 1 > > ### but this doesn't work, and i don't understand why > [EMAIL PROTECTED]:~/src/sandbox/troscoe]$ cvs status test > =================================================================== > File: test Status: Up-to-date > > Working revision: 1.1 > Repository revision: 1.1 /cvsroot/sandbox/troscoe/test,v > Sticky Tag: (none) > Sticky Date: (none) > Sticky Options: (none) > > [EMAIL PROTECTED]:~/src/sandbox/troscoe]$ cvs up -j1.1.2.1 -j1.1.2.2 test > RCS file: /cvsroot/sandbox/troscoe/test,v > retrieving revision 1.1.2.1 > retrieving revision 1.1.2.2 > Merging differences between 1.1.2.1 and 1.1.2.2 into test > rcsmerge: warning: conflicts during merge > > [EMAIL PROTECTED]:~/src/sandbox/troscoe]$ cat test > trunk line 1 > <<<<<<< test > ======= > branch line 1 > branch line 2 > >>>>>>> 1.1.2.2 > > > > Is there no way to take the delta between two revisions and merge those > onto another branch? Do i have to merge the entire branch down if i want > to do this? > > Thanks! > tyler > > > _______________________________________________ > Info-cvs mailing list > [EMAIL PROTECTED] > http://mail.gnu.org/mailman/listinfo/info-cvs _______________________________________________ Info-cvs mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/info-cvs