[Top][All Lists]

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

Re: Multiple sources in a vendor branch

From: Kaz Kylheku
Subject: Re: Multiple sources in a vendor branch
Date: 10 Feb 2004 09:44:42 -0800

Rohan Nandode <address@hidden> wrote in message news:<address@hidden>...
> Hi,
> The problem descriptions goes like this:
> I have a vendor branch(1.1.3) for 3rd party library - say "library1" 
> along with my project source in my CVS. I have done some modifications 
> to the sources in library1.
> Now I there is a latest release of the library1 and I would like to 
> upgrade it. But the problem is that I am not sure of how much stable 
> will be the upgraded version. 

Vendor branching is a braindamaged feature of CVS. There are a number
of problems with it.

- Each vendor branch shoots from version 1.1 of every file. If you
suddenly develop a relationship with a vendor who wants to make
patches based on some some other baseline---for instance, a release
that you made---you can't use the vendor branch.

- When you import to a branch, some files that are unmodified in your
main trunk are superseded by way of setting the RCS head revision to
the branch. So a check out of the branch produces a mixture of true
main trunk files and vendor branch files, a kind of half-baked merge.
This game playing with the head revision is an optimization, like the
Attic directories.

In Meta-CVS, I have implemented sane vendor branching. A command
called ``grab'' checks out the material, compares it against the
snapshot you are importing and then produces a sandbox which you can
commit to complete the import. Nothing happens in the repository until
you are happy with the diffs and do a commit. Files and symbolic links
are analyzed to automatically detect renames and moves. If you aren't
happy with the results, just scrap the MCVS/ directory and try again.
You can grab to any branch or main trunk. Branching and merging is
easy in Meta-CVS, because it does all the underlying CVS tagology
(taggery? tagistry?)

   cd vendor-foo-drop
   mcvs grab -r vendor-bar-branch my-project

   # oops made a mistake, selected wrong branch

   rm -rf MCVS  # no problem

   mcvs grab -r vendor-foo-branch my-project
   mcvs commit

   mcvs sw        # no args, switch to main trunk
   mcvs merge vendor-foo-branch
   mcvs commit

reply via email to

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