[PATCH] add support for marking changesets as dead

Martin Geisler mg at lazybytes.net
Wed Feb 2 03:49:05 CST 2011


Matt Mackall <mpm at selenic.com> writes:

> Ideally, if we're using both concepts together, people will only ever
> regularly abandon changesets that are still in the liquid state. In
> other words 'freezing' should be interpreted as a promise not to later
> 'abandon' a changeset.
>
> A picture might be helpful here:
>
>         |          |
> frozen  1  liquid  2  abandoned
>         |          |
>
> (Ancestors are on the left, descendants are on the right)
>
> All open development heads live on boundary 2
> Code that's been rejected lives to the right of it
> Code that's been accepted lives to the left of it
> Everything between 1 and 2 is still being evaluated and tested
> The rightmost place in the spectrum where you'd cut a release is 1
> All past releases would live to the left of boundary 1
> Tags will generally point into the frozen set
> Bookmarks will generally point into the liquid set
>
> Boundary 1 can shift right, shouldn't shift left without a -f. If you
> try to shift it right of 2, 2 is moved right.
>
> Boundary 2 can shift either way, but shouldn't shift left of 1, as
> that would imply abandoning released code. So you'd need to shift 1
> first or at the same time (with -f).
>
> Any of frozen, liquid, or abandoned can be empty, which means that
> boundary 1 and 2 can and often will be the same. For instance, in
> current core Mercurial, all csets are treated as frozen.
>
> But if your model is simply:
>
>      |
> keep | abandon
>      |
>
> ..it's incomplete.

I like your three-phase model above!

My simple two-phase model looks incomplete when you describe it like
"kept or abandoned", but that's because I considered all the kept
changesets to be liquid. But I can definitely see how a more
fine-grained view is better, so lets go for the three stages.

I would then expect 'hg clone', 'hg pull' and 'hg push' to work by:

1) first transfer the new boundary 2

2) then transfer any changesets left of boundary 2

That should implement the "abandoned changesets stay put" semantics I
like.

-- 
Martin Geisler

Mercurial links: http://mercurial.ch/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: not available
URL: <http://selenic.com/pipermail/mercurial-devel/attachments/20110202/e84d7296/attachment.pgp>


More information about the Mercurial-devel mailing list