Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 19 Apr 1997 17:26:14 +0200 (MET DST)
From:      Eivind Eklund <eivind@nic.follonett.no>
To:        terry@lambert.org (Terry Lambert)
Cc:        hackers@freebsd.org
Subject:   Re: CVS vendor branches
Message-ID:  <199704191526.RAA26899@nic.follonett.no>
In-Reply-To: <199704182251.PAA03213@phaeton.artisoft.com> from Terry Lambert at "Apr 18, 97 03:51:31 pm"

next in thread | previous in thread | raw e-mail | index | archive | help
> > a way of hacking some of the wanted
> > features is by treatingthe FreeBSD main development as a vendor
> > branch, and using cvs import to maintain the parts you don't change.
> 
> This works, but then I have my history at the cost of losing that
> of FreeBSD.  It also leaves the issue of integrating my history
> blowing in the wind... when/if an integration takes place, the
> only thing imported will be my tip, right?  So if I do something to
> accommodat a VM bug (say), and it's later fixed, and I want to
> branch back there for maintenance, now you must resolve conflicting
> tips, right?

Not nescessarily.  I have some ideas for how to create a fake branch at your
machine, and then importing the branch into the FreeBSD CVS repository _as a
branch_ at a later date.

(1) You work on a CVS-tree with FreeBSD-current imported as a base.  Any
    conflicting changes to the tree done by the main FreeBSD development
    line, you merge. (This is less work than it sound like).  When you're
    done, you end up with one large patch which will bring
    -CURRENT to be equal to your source (or the relevant parts of it).
    You submit this as a script, a script which also recreate your
    changes as a branch of the FreeBSD CVS tree.

    This way, your editing history will be recorded in a branch, and the tip
    of that branch will be integrated as YAMFT with a reference to your
    branch for editing history.  At this point, you abandon your changes to
    the imported source, as your changes have been brought into the main
    tree.  (The abandoning can be done by re-creating the underlying CVS/RCS
    files of just those files, if nescessary re-creating any later patches. 
    This can be automated.)

    If you are doing further development, you create another branch.

	Diskspace requirements: This model would require a FreeBSD CVS tree kept
	up to date, a copy of the FreeBSD source tree used as an import base, a
	local CVS tree with the imported sources, and a checked out copy of the
	FreeBSD sources with your changes from the local CVS tree.

(2) This could probably also be done by creating a copy of the FreeBSD CVS
    tree with a "Terry" branch in it.  You would need to create a local copy
    of the FreeBSD CVS tree, branch it, and make scripts to keep the head up
    to date with regards to a clean copy.  It is possible that all of this
    could be done from the CTM delta files.

    Integration of your changes and edit-history would have to be done in
    the same way as suggestion (1).

Benefits of (1) is that it is least work to implement; benefits of (2) is
that it is probably most comfortable to work with.

Does the above suggestions sound like it could create a tolerable
working-environment?

As for the 'ideal environment' section:

I'm having a difficult time envisioning how your 'unbranching' would work;
any changes will need to be merged by a human at some point, and I can't see
how unbranching would work differently from the present branches, except
that they presumably have a machine-readable tag pointing back from the
merge-point, and are frozen at merge.  This sound technically sound, but not
really nescessary.  Am I missing something?

Having CVSup/CTM automatically create and rename branches sound nice; I
wonder how much work it would be to implement.  However, just having them
respect branches would probably be enough; the problem is how to do this and
still keep CVSup as rock-solid as it is towards partial or damaged
CVS-trees.

regards,
Eivind.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199704191526.RAA26899>