Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 26 Feb 1997 11:35:18 -0700 (MST)
From:      Nate Williams <nate@mt.sri.com>
To:        Terry Lambert <terry@lambert.org>
Cc:        nate@mt.sri.com (Nate Williams), freebsd-current@freebsd.org
Subject:   Re: anoncvs server
Message-ID:  <199702261835.LAA29819@rocky.mt.sri.com>
In-Reply-To: <199702261751.KAA28356@phaeton.artisoft.com>
References:  <199702260118.SAA26209@rocky.mt.sri.com> <199702261751.KAA28356@phaeton.artisoft.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Terry Lambert writes:
> > > > You might even be able to create the 'magic' branch tag on your local
> > > > machine, but I've not done it.
> > > > 
> > > > Have you messed with it at all?
> > > 
> > > Yes, but it looks like I can oly do one "magic" at a time without a
> > > mirror repository and writing in an incremental checkin for a vendor
> > > branch (possible with a "cvs log | sed ...", but takes too much local
> > > space to do).
> > 
> > What?  The Repository files are not going to be modified if they're on
> > the 'magic' branch, so why the need for a mirror repository?  And, a
> > vendor branch is totally un-necessary?
> 
> There is a difference between "a magic branch" and "the magic branch".
> You guys have not stuck a tag into the main CVS tree, so I can create
> "a magic branch" locally, but to create "the magic branch" takes someone
> with commit privs.

I'll have to defer to John here, since I'm not sure if it requires
someone with commit privs to do it.  It might be as easy as creating a
local 'hands-off' branch on the local branch.  John?

> The need for the mirror repository comes from me needing to support
> incremental change-over as portions of my patches are (hopefully)
> integrated into the main line source base.  To remain operational,
> a local system built from the regular sources with my "magic tag"
> stuff merged in from my local use of the tag requires that I back
> out changes as they are included:
> 
>              FreeBSD            |             Terry
>                               ,-|
>                               | |
>                 Standard tree | |
>                               | |-.
>                               `-| |
>                                 | | My change #1
>                                 | |
>                                 |-'
>                                 |-.
>                                 | |
>                                 | | My change #2 <<depends on #1>>
>                                 | |
>                                 |-'
>                               ,-|    <<Locally remove "My change #1">>
>                 Standard tree | |
>                       +       | |
>                  My change #1 | |-.
>                               `-| |
>                                 | | My change #2 <<depends on #1>>
>                                 | |
>                                 |-'
>                                 |
> 
> I can't do the ""Locally remove" steps against the magic branch without
> a second tree.

Sure you can.  It's called 'merging' in the change from the FreeBSD
branch into your 'magic' branch.  And, as I stated before it's a
nightmare to do.

> If FreeBSD came in on a vendor branch initially, then it wouldn't touch
> anything else I had done locally.

You're free to do that, but it requires the same sort of things Peter
does in the SMP branch.  But, it means losing all of the history for the
FreeBSD changes.

Either we provide you with a 'vendor' source SNAPSHOT, or we provide you
with the CVS repository.  You can't mix/match what you want, simply
because it's 'not possible' to do automatically.

> Alternately, if it came in with a
> predefined "magic tag", I could only make one change locally, and then
> wait 9 months (the current time outstanding for the layering patches
> being committed) before I could resonable reuse the "magic tag" for
> another change.

I don't think you understand CVS/branches very well.  The 'magic tag' is
a 'magic branch tag'.

So, assuming we have the magic tag as set to be 1.1000 for you.  You
'locally' tag the FreeBSD sources at some point to be at that point.
Then, you modify your sources (similar to what we've done with the
RELENG branches) using normal CVS commands, and these changes occur
*ONLY* on the 1.1000 branch.  CVSup refuses to touch this branch because
it's predefined to be 'magic', or for local use.

As changes are made in -current, you can either refuse to 'merge' them
into your branch, or merge them in, as has been done with all the YAMFC
changes you've seen.  But, since *YOU* are the magic branch maintainer,
it is your responsibility to merge them in, nobody but you can do them.
In any case, these are the sorts of things you had to do in the past
anyway, it's just that CVS makes it (hopefully) easier to do these sorts
of tasks.

Assuming you've done that, you should be able to do a diff from -current
to your sources at any point in time, and show all of your logs.  The
above two tasks are not automated in CVS, but I'm sure you could whip up
a script of two to build them.  Note also that things aren't as 'clean'
as one would like, because changes you made will also be mixed in with
'merges' from -current, but I don't think anyone would fault you for
that.

> With the "magic tag" approach, I can only have one set of dependent
> patches outstanding at one time.

True, but you can't have everything.  What you have now is orders of
magnitude better than what you had to do before.  And, assuming you've
kept things 'separate' *you* should be able to pull out the relevant
changes as needed.

Having N sets of 'depedant' patches is pretty much impossible in CVS
w/out N branches, and keeping N branches sychronized is an almost
impossible task.  But, if you *really* want I'm sure John could give you
a set of 'magic branch tags' he won't touch. :) :) :) :)



Nate



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