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: Derek Robert Price
Subject: Re: Best method to replace a branch's code
Date: Wed, 24 Mar 2004 13:51:39 -0500
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624 Netscape/7.1

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