[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

complicated merge question

From: Ted Stern
Subject: complicated merge question
Date: Tue, 18 Sep 2007 11:35:56 -0700
User-agent: Gnus/5.110007 (No Gnus v0.7) Emacs/22.1.50 (gnu/linux)

Hi all,

Say I have created a branch:

    cvs -d /cvs/root/dir checkout project
    cd project
    cvs tag BRANCH_ROOT
    cvs tag -b branch
    cvs update -r branch

and over time the trunk has been updated with some important changes
that might possibly conflict and need to be tested, so I need to merge
in work from the trunk to the branch.

Here's my problem ... because I'm moving my CM style to
"branch-on-bug" (where bug could also be a feature), I'd like to avoid
having to make a lot of non-branch tags to keep track of what was
merged, and when.

So when I merge, I want to be able to specify a date on a branch as an
option to the update -j command.

    # in branch sandbox ... run on 2007/08/30:

    cvs update -j BRANCH_ROOT -jD 20070917
    cvs commit -m "merge [BRANCH_ROOT -> 20070830] from trunk to \

If another synchronization is required later (this bug could persist
for a while), I would need to do this again:

    # in branch sandbox ... run 2007/09/17:

    cvs update -jD 20070830 -jD 20070917
    cvs commit -m "merge [20070830 -> 20070917] from trunk to \

I could even imagine situations in which I might want to specify a
particular date on the branch:

    cvs update .... -jDr 20070917 branch ...

But I don't think this is possible, is it?

What are the rules on combining -D, -r and -j update options?

And yes, obviously this would be much easier in subversion, but the
project I'm working with isn't yet ready to convert.

If it isn't possible to combine options this way, I suppose I'd have
to use rtag to create a tag at the appropriate point.  Then if the
number of tags becomes too unwieldy, I can always delete them.  But it
doesn't appear to be possible to use -r and -D at the same time.  If I
were just merging from the trunk, I'd want to do something like this,
I guess ...

   # in branch sandbox, run 2007/09/17, after 2007/08/30 merge sync:

   cvs rtag -D 20070830 2007_08_30 project
   cvs rtag -D 20070917 2007_09_17 project
   cvs update -j 2007_08_30 -j 2007_09_17
   cvs commit -m "merge [2007_08_30 -> 2007_09_17] from trunk to \

This works okay if I've branched from the trunk, but what if my branch
is off of another branch?  This might happen if, for example, I'm
fixing bugs on a release candidate.  Can you do this?

   cvs rtag -r release -D 20070830 parentbranch-2007_08_30 project

My understanding is that this is either not possible or would rename
the release branch.  Is that correct?

 dodecatheon at gmail dot com
 Frango ut patefaciam -- I break so that I may reveal

reply via email to

[Prev in Thread] Current Thread [Next in Thread]