Differences between revisions 3 and 4
Revision 3 as of 2013-11-19 20:08:23
Size: 2690
Editor: Sean Farley
Comment: figure 1: add nodesep=1.0
Revision 4 as of 2013-11-19 20:09:33
Size: 2546
Editor: Sean Farley
Comment: cycle: remove text figure
Deletions are marked like this. Additions are marked like this.
Line 24: Line 24:
{{{
o A''
| o A'
| o A |
\ | /
 \ | /
  \ | /
   \-----|-----/
}}}
Line 55: Line 45:

Note:

This page is primarily intended for developers of Mercurial.

2.9 Sprint Obsolete Markers Notes

Notes from the 2.9 development sprint pertaining to obsolete markers.

Contents

  1. Cycles

1. Cycles

A'' and A' both mark A obsolete, so you have a divergence. If Alice and Bob handle that case separately, Alice may pick A'' (by adding an obsolete marker for A'' -> A') and Bob may pick A' (by adding a marker for A' -> A''), thus introducing a direct cycle between A'' and A'.

Possible solutions for exchange, given we know the set of markers that should be on the destination:

Solution

sufficient

partial

hash tree

boxed

almost

rsync

time bucket

no?

sufficient = does the solution transmit everything MUST send - that is, the meta-history on both sides might mismatch, but the changeset history is correct on both sides

partial = can the solution transmit less than all the markers that have ever existed intelligently

box is "almost" sufficient for two reasons:

  1. We can't push isolated kills

  o C ==x
  |
  o B
  |
  o A
  • That is, if C is already on the server in draft phase, we can't push the kill marker for C with boxpush as it's currently defined. Proposal v1: push will inspect incoming draft-phase heads from the server. If any are dead locally, we push their kill marker to the server. We would exchange (pull or push):
  • markers that apply to changesets being exchanged
  • kill markers for ctx in common post-exchange Attempt two:

    We push [$NODE:↓:killed(heads(descendents($NODE)))]

  • You can't handle a marker appearing after a push. That is

        α'       α
  o A'' == o A' == o A

2.9sprintObsoleteNotes (last edited 2013-11-20 17:57:44 by Sean Farley)