[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: merging delta between two revisions down to trunk doesn't work (was
From: |
Tyler |
Subject: |
Re: merging delta between two revisions down to trunk doesn't work (was (no subject)) |
Date: |
Wed, 21 Apr 2004 16:31:39 -0700 |
User-agent: |
Mutt/1.4.2.1i |
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:
>
> address@hidden:~/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)
>
> address@hidden:~/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
>
> address@hidden:~/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
>
> address@hidden:~/src/sandbox/troscoe]$ echo "trunk line 1" > test
>
> address@hidden:~/src/sandbox/troscoe]$ cvs add test
> cvs add: use 'cvs commit' to add this file permanently
>
> address@hidden:~/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
> address@hidden:~/src/sandbox/troscoe]$ cvs tag -b BRANCH test
> T test
>
> address@hidden:~/src/sandbox/troscoe]$ cvs up -rBRANCH test
>
> ### check in a couple changes on the branch
> address@hidden:~/src/sandbox/troscoe]$ echo "branch line 1" >> test
>
> address@hidden:~/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
>
> address@hidden:~/src/sandbox/troscoe]$ echo "branch line 2" >> test
> address@hidden:~/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:
> address@hidden:~/src/sandbox/troscoe]$ cvs up -r1.1 -p test
> trunk line 1
>
> address@hidden:~/src/sandbox/troscoe]$ cvs up -r1.1.2.1 -p test
> trunk line 1
> branch line 1
>
> address@hidden:~/src/sandbox/troscoe]$ cvs up -r1.1.2.2 -p test
> trunk line 1
> branch line 1
> branch line 2
>
> address@hidden:~/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
>
> address@hidden:~/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
> address@hidden:~/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)
>
> address@hidden:~/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
>
> address@hidden:~/src/sandbox/troscoe]$ cat test
> trunk line 1
> branch line 1
> branch line 2
>
> ### i can merge backwards to roll back a change
> address@hidden:~/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)
>
> address@hidden:~/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
>
> address@hidden:~/src/sandbox/troscoe]$ cat test
> trunk line 1
> branch line 1
>
> ### and roll back some more
> address@hidden:~/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
> address@hidden:~/src/sandbox/troscoe]$ cat test
> trunk line 1
>
> ### but this doesn't work, and i don't understand why
> address@hidden:~/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)
>
> address@hidden:~/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
>
> address@hidden:~/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
> address@hidden
> http://mail.gnu.org/mailman/listinfo/info-cvs