linux bame

Paul Bame bame@noam.fc.hp.com
Tue, 14 Nov 2000 13:00:41 -0700


= bame@riverrock.org wrote:
= > 
= > = On Thu, Nov 09, 2000 at 03:53:48PM -0700, Paul Bame wrote:
= > = >     Somebody never imported 2.4.0-test6, then I imported -test10 on the
 mai
= > n
= > = >     vendor branch and now can't (easily) undo that to import test6 and 
THEN
= > = >     test10.  This workaround sucks.
= 
= If the sources on the linus branch have been religiously tagged every
= time they're updated, then reverting to a previous would have been
= relatively painless.  I'm not sure what "this workaround" was, but I
= guess at this point test10 is merged so the point is moot.

Like the comment said, there was no copy of plain -test6 in CVS (that I
saw).  Without -test6 in CVS it's much harder to use cvs diff to figure
out the right way to merge files when there are conflicts.
I didn't realize this until -test10 was already there, so I *then*
brought in -test6.  They're in the wrong order on the 1.1.1 branch, so
the standard merge command 'cvs -jlinus:yesterday -jlinus:<newest>'
won't work next time -- explicit names will be required.

= Vendor branches are evil.  (When I say "vendor branch" I mean the
= special kind of branch created by "cvs import".)  When you check in to a
= vendor branch your changes will also be seen on the trunk, *unless* that
= file has been previously modified on the trunk.

Thanks for clarifying what "evil" means!  That is pretty ugly indeed!

= This is almost never
= what you want and adds confusion during merging (when you least want
= it).  Tracking third-party sources using a normal branch, as we are
= doing, is much simpler and gives you more control.

But I've seen no cook book for it.  I'm guessing that instead of cvs import
you use:
	cvs co -rlinus linux
	<unpack new linux bits on top of linux>
	cd linux
	cvs commit (make note of new files from commit)
	cvs add <new files>
	cvs commit
	cvs tag LINUS_NEW_REVISION
perhaps with provision for removing obsolete files too.  I suppose that is
simpler than a single cvs import command from a certain perspective :-)

= When I did the original import of Linus' sources I converted the vendor
= branch to a normal branch using cvs admin magic.  So none of the
= annoyances of vendor branches should affect us, as long as any new files
= are added on the linus branch using "cvs add", NOT "cvs import".

Have you a pointer to the magic or the knowledge to recreate it?  I
had no idea there was a special RCS marking for the evil type of branch.

= When you say you "I imported -test10 on the main vendor branch" I hope
= you really mean that you used "cvs add" on the linus branch.  From your
= other messages, your tags looked good.

I used "cvs import", and either your branch magic worked, or I finished the
merge before anybody randomly updated from cvs.  Since import used 1.1.1,
which is the branch you "fixed", it seems possible that 'cvs import' might
be rendered harmless but I don't know that for sure.

	-P