[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: merge question
From: |
Pierre Asselin |
Subject: |
Re: merge question |
Date: |
Tue, 3 Feb 2009 03:48:44 +0000 (UTC) |
User-agent: |
tin/1.8.3-20070201 ("Scotasay") (UNIX) (NetBSD/4.0 (i386)) |
Bob Paige <address@hidden> wrote:
> [-- text/plain, encoding 7bit, charset: ISO-8859-1, 88 lines --]
> The root of the problem seems to be these phony conflicts. I've only done a
> merge once (our release guy usually does them) and it is painful. I guess
> that is why he wants to avoid the phony conflicts.
Hm, you must be leaving out a step. The first time you merge from
branch to trunk, you can do
cvs update -A # back to trunk
cvs update -j branch_tag
and fix conflicts, commit. The second and subsequent times, you have
to do something else to avoid reapplying those changes.
First: put a tag at the tip of the branch from which you just merged.
cvs tag -r branch_tag branch_MERGED
Later when more work has been committed to the branch and you want
to fold it into the trunk, you do something like this:
cvs update -A # back to trunk
cvs update -j branch_MERGED -j branch_tag
fix conflicts, test...
cvs commit
cvs tag -F -r branch_tag branch_MERGED
The idea is to always leave a tag behind you, here "branch_MERGED",
at the point on the branch from which you just merged. The next
time around, this allows you to use the two "-j" form of update
and merge only from the previous merge point to the new tip. You
move the "branch_MERGED" tag after each merge; the "-F" option is
necessary because the tag already exists.
CvsNT keeps track of the last merge point automatically (in the
log message, I think) but I'm not sure how to make use of it.
Unix cvs doesn't and you have to manipulate a tag yourself.
--
pa at panix dot com