Differences between revisions 1 and 13 (spanning 12 versions)
Revision 1 as of 2010-06-10 12:07:43
Size: 956
Comment:
Revision 13 as of 2012-10-25 20:49:07
Size: 2080
Editor: mpm
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
#pragma section-numbers 2

<<Include(A:dev)>>
<<Include(A:dated)>>
Line 4: Line 9:

Original proposal: [[http://markmail.org/message/vyyjfyshhnb5acpc|RFC: dealing with dead, anonymous feature branches]]

Implementation of proposal: [[http://bitbucket.org/mg/dead-branches]]
Line 15: Line 24:
 dead branch:: a set of dead changesets
Line 21: Line 32:
 2. Then, send changesets on dead branches if they descend from what is now remote heads.  2. Then, send changesets descending from what is now remote heads.
Line 26: Line 37:

== Rules for Pull ==

Symmetric to push, but the server needs to filter the changesets.

== Use Cases ==

An experiment can be stopped, whether it has been pushed to another server or not:

{{{#!dot
digraph {
  graph [rankdir = LR]
  node [shape = box, style = filled, fillcolor = cornflowerblue]
  A -> B;
}
}}}

A new commit is made:

{{{#!dot
digraph {
  graph [rankdir = LR]
  node [shape = box, style = filled, fillcolor = cornflowerblue]
  A -> B -> X;
}
}}}

A pull is made, bringing ind `C`, `D`, and `E` and it is decided that `X` is no longer is relevant:

{{{#!dot
digraph {
  graph [rankdir = LR]
  node [shape = box, style = filled, fillcolor = cornflowerblue]
  Y [fillcolor = FireBrick]

  A -> B -> C -> D -> E;
  B -> X-> Y;
}
}}}

----
CategoryDeveloper CategoryNewFeatures

Note:

This page is primarily intended for developers of Mercurial.

Note:

This page appears to contain material that is no longer relevant. Please help improve this page by updating its content.

Poisoned Changesets

Status: draft

Original proposal: RFC: dealing with dead, anonymous feature branches

Implementation of proposal: http://bitbucket.org/mg/dead-branches

1. Definitions

We will use the following definitions:

poisoned changeset

a changeset with poisoned=1 in its extra dict.

dead head
a poisoned changeset that is also a head.
dead changeset
a changeset from which you can only reach dead heads.
dead branch
a set of dead changesets

2. Rules for Push

When pushing changesets, the following two rules are observed:

  1. First, send changesets that are not on a dead branch.
  2. Then, send changesets descending from what is now remote heads.

The discovery protocols gives us the heads of the common set of nodes. From these we can compute the changesets that are not on a dead branch (rule 1). We can then look at the remaining heads among the nodes in the common set and push descendants of these.

No new information is neede by this protocol, everything can be computed locally from information about the common set of nodes.

3. Rules for Pull

Symmetric to push, but the server needs to filter the changesets.

4. Use Cases

An experiment can be stopped, whether it has been pushed to another server or not:

A new commit is made:

A pull is made, bringing ind C, D, and E and it is decided that X is no longer is relevant:


CategoryDeveloper CategoryNewFeatures

PoisonedChangesetsPlan (last edited 2015-06-12 08:45:14 by Pierre-YvesDavid)