[Top][All Lists]

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

RE: Best method to replace a branch's code

From: Euan Guttridge
Subject: RE: Best method to replace a branch's code
Date: Thu, 25 Mar 2004 12:48:24 -0000

Thanks for this Derek.. I also tried to apply this for replacing HEAD with a
branch. First attempt of using 

cvs co -rHEAD -jHEAD -jbranchA project
- applied a sticky tag of 'HEAD' which commiting did not like

then; cvs co -jbranchA project
- simply did not merge the branchA changes in

Any thoughts appreciated,

-----Original Message-----
From: Derek Robert Price [mailto:address@hidden
Sent: 24 March 2004 18:52
To: Larry Jones
Cc: Euan Guttridge; 'address@hidden'; 'Fabian Cenedese'
Subject: Re: Best method to replace a branch's code

Hash: SHA1

I was in a hurry when I wrote this earlier.  The short version is that
the form of the command I suggested is asking CVS to take the changes
that would be necesary to transform point A into point B and merge them
into point A, which, by definition, then transforms point A into point B.


Derek Robert Price wrote:

> Larry Jones wrote:
> Derek Robert Price writes:
> >cvs up -jbranchA -jbranchB -rbranchA project
> Isn't that just a long way of doing:
> cvs up -rbranchA -jbranchB project
> That was my first thought, but it still may require a bit of manual
> intervention.  For example, that won't delete files that exist on
> branchA that have never existed on branchB and you'll get conflicts for
> files that were independently created on both branches.  It is a good
> start, though, and may do the whole job if you're lucky.
> No.  The trick to thinking about this is really to visualize only your
> destination and your merge endpoints as three distinct snapshots of a
> project in time and try to ignore the intervening changes, but I will
> draw the branch diagram anyhow.  Assume:
> --X---Y--------------------------------------
>    \   \
>     \   \----------branchA-----
>      \
>       \--------branchB-----
> `cvs up -rbranchA -jbranchB' will compute the GCA of branchA & branchB
> (X in the diagram), computes the diff from X to the tip of branchB, then
> merges the result (effectively applying it via the patch program) into
> branchA.  This is effectively merging the changes since branchB branched
> into branchA and neglecting to remove any changes made to the trunk
> since branchB branched or to branchA.
> `cvs up -rbranchA -jbranchA -jbranchB', computes the diff from the tip
> of branchA to the tip of branchB, then merges the result (again,
> effectively applying it via the patch program) into the tip of branchA,
> effectively recreating branchB.
> In other words, imagine:
> echo a whole bunch of junk >file
> cp file file2
> echo some other junk >>file2
> diff -u file file2 >mypatch.diff
> patch -p0 <mypatch.diff
> Bingo.  Since the diff was determine from file -> file2, then the
> resulting patch applied to file, the contents of file now look like file2.
> Derek
> --
>                 *8^)
> Email: address@hidden
> Get CVS support at <>!

Info-cvs mailing list

- --

Email: address@hidden

Get CVS support at <>!
Version: GnuPG v1.2.1 (GNU/Linux)
Comment: Using GnuPG with Netscape -


reply via email to

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