On Wed, Jun 07, 2006 at 05:56:46PM -0400, Richard Lowe wrote:

> To expand on this based on what I just learned.  Respins don't move the build 
> further along the history, the 'fixing' change is cherry-picked into the 
> build. 
> This means we can't just tag the new change as bN and bNa, as there's no 
> guarantee all preceding changes were part of that build.

Correct.

> Making use of multiple heads in the same repository tends to confuse things 
> greatly.  I also suspect that you can't pull -u when the incoming changes 
> introduce multiple heads (I'm not sure if this is the case when both new 
> heads 
> come from the remote, however).

Certainly this is something we need to take a look at.  If it's that
painful, then we'll have to use separate repos for each build.

> I'd certainly tag the build closure, but given the above, I can't think of a 
> way to deal with respun builds (well, ok, ceasing cherry-picking the fixing 
> change into the build, and taking the history up to that point, but I'm 
> assuming that's not tolerable).

No, it's not.  We have to have the ability to cherry-pick for respins.  We
can't take everything up to the change we need because major projects could
have integrated in the meantime, and we can't re-test (and it's possible
that such projects are actually cross-consolidation, and all such testing
was in the works for the next build, and can't be rushed ahead two weeks).
We also have to be able to do respins, because sometimes the problems they
fix would truly cause a build to be DOA, and we want to avoid that as much
as possible.

Mercurial basically makes the difference between a normal respin and a
divergent respin go away, but in the wrong direction, unless we can make
the branching work for us.  Of course, divergence will be a problem
regardless, if any file is changed in a different way between one branch
and the trunk.

> Is the tagging of respins really such an issue? As I understand the above, 
> they 
> serve for no other purpose than to put a non-toxic set of packages into the 
> WOS, I can't (currently) come up with a situation where I would want that 
> exact 
> source, rather than a similar point along the gate's history (if I wanted the 
> fixing change, I'd take the gate after that change...)

Having the sources available for a given build is required for
reproducability.  While we only archive long-term the sources for the final
builds for any release, during the release the individual builds are useful
for testing purposes.

Of course, we can always do this the way we always have, with separate
repositories.  The question simply was whether it's meaningful to tag a
snapshot "branch" when respins are a fact of life.  The upsides I see would
be saving disk space (something we could do almost as well with zfs if we
can't with hg), saving directory namespace (if we care), and being able to
publish the respins easily.  I don't know if any of that would be worth the
cost, but then I don't know exactly what the cost is, anyway.

Danek
_______________________________________________
tools-discuss mailing list
tools-discuss@opensolaris.org

Reply via email to