info-cvs
[Top][All Lists]
Advanced

[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,
Euan



-----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


-----BEGIN PGP SIGNED MESSAGE-----
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

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 <http://ximbiot.com>!


_______________________________________________
Info-cvs mailing list
address@hidden
http://mail.gnu.org/mailman/listinfo/info-cvs


- --
                *8^)

Email: address@hidden

Get CVS support at <http://ximbiot.com>!
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)
Comment: Using GnuPG with Netscape - http://enigmail.mozdev.org

iD8DBQFAYdi6LD1OTBfyMaQRAp8dAKCkrv92ynJ6I07I8iLImhgFNmBS3wCff9HV
pu3FxUhcm8H6ljvSZ6f537U=
=tmAv
-----END PGP SIGNATURE-----





reply via email to

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