Differences between revisions 1 and 3 (spanning 2 versions)
Revision 1 as of 2014-01-24 00:34:46
Size: 251
Comment:
Revision 3 as of 2014-01-24 02:50:47
Size: 2503
Comment:
Deletions are marked like this. Additions are marked like this.
Line 9: Line 9:
== Simple Case ==



== Deletion Case ==


== Advance Case ==

== Partial Information Case ==
== Definition ==


1. You want all markers **relevant** changeset common between source and
destination to be exchanged
2. Marker **relevant to a changeset** are:

  * marker that use this changeset as successors
  * prune marker of direct children on this changeset.
  * recursive application of the two rules on successors store in those marker

?. What shall we do on partial split push…



{{{
    o ← a changeset,
    * ← a changeset that exist remotly before the push.
    x ← obsolete changeset
    @ ← changeset being pushed
}}}

== A. Simple Case ==

=== A.1 pushing a single heads ===

==== A.1.1 pushing a single head ====

{{{
    @ A
    |
    * O
}}}

Marker exist from:

 * A

Command run:

 * hg push -r A
 * hg push

Expected exchange:

 * chain from A

==== A.1.2 pushing a multiple changeset into a single head ====

{{{
    @ B
    |
    @ A
    |
    * O
}}}

Marker exist from:

 * A

Command run:

 * hg push -r B
 * hg push

Expected exchange:

 * chain from A


==== A.2 Two heads ====

{{{
  o B
  | @ A
  |/
  * O
}}}

Marker exist from:

 * A

Command run:

 * hg push -r A

Expected exchange:

 * chain from A

Expected Exclude:

 * chain from B

== B. Deletion Case ==

==== B.1 Pruned changeset atop the pushed set ====

{{{
    x B
    |
    @ A
    |
    * O
}}}

Marker exist from:

 * B (prune)

Command run:

 * hg push -r A
 * hg push

Expected exchange:

 * prune marker for B

==== B.2 Pruned changeset on head. nothing pushed ====

{{{
    x A
    |
    * O
}}}

Marker exist from:

 * A (prune)

Command run:

 * hg push -r O
 * hg push

Expected exchange:

 * prune marker for A

==== B.3 Pruned changeset on non-pushed part of the history ====

{{{
  x C
  |
  o B
  | @ A
  |/
  * O
}}}

Marker exist from:

 * C (prune)

Command run:

 * hg push -r A
 * hg push

Expected exchange:

 * ø

Expected Exclude:

 * chain from B

==== B.4 Pruned changeset on common part of history ====

{{{
  x C
  | * B
  | |
  | * A
  |/
  * O
}}}

Marker exist from:

 * C (prune)

Command run:

 * hg push -r B
 * hg push

Expected exchange:

 * prune for C

== C. Advance Case ==

== D. Partial Information Case ==

List of case and expected behavior when exchanging obsolesence marker

/!\ This page is intended for developer

1. Definition

1. You want all markers **relevant** changeset common between source and destination to be exchanged 2. Marker **relevant to a changeset** are:

  • marker that use this changeset as successors
  • prune marker of direct children on this changeset.
  • recursive application of the two rules on successors store in those marker

?. What shall we do on partial split push…

    o ← a changeset,
    * ← a changeset that exist remotly before the push.
    x ← obsolete changeset
    @ ← changeset being pushed

2. A. Simple Case

2.1. A.1 pushing a single heads

2.1.1. A.1.1 pushing a single head

    @ A
    |
    * O

Marker exist from:

  • A

Command run:

  • hg push -r A
  • hg push

Expected exchange:

  • chain from A

2.1.2. A.1.2 pushing a multiple changeset into a single head

    @ B
    |
    @ A
    |
    * O

Marker exist from:

  • A

Command run:

  • hg push -r B
  • hg push

Expected exchange:

  • chain from A

2.1.3. A.2 Two heads

  o B
  | @ A
  |/
  * O

Marker exist from:

  • A

Command run:

  • hg push -r A

Expected exchange:

  • chain from A

Expected Exclude:

  • chain from B

3. B. Deletion Case

3.0.1. B.1 Pruned changeset atop the pushed set

    x B
    |
    @ A
    |
    * O

Marker exist from:

  • B (prune)

Command run:

  • hg push -r A
  • hg push

Expected exchange:

  • prune marker for B

3.0.2. B.2 Pruned changeset on head. nothing pushed

    x A
    |
    * O

Marker exist from:

  • A (prune)

Command run:

  • hg push -r O
  • hg push

Expected exchange:

  • prune marker for A

3.0.3. B.3 Pruned changeset on non-pushed part of the history

  x C
  |
  o B
  | @ A
  |/
  * O

Marker exist from:

  • C (prune)

Command run:

  • hg push -r A
  • hg push

Expected exchange:

  • ø

Expected Exclude:

  • chain from B

3.0.4. B.4 Pruned changeset on common part of history

  x C
  | * B
  | |
  | * A
  |/
  * O

Marker exist from:

  • C (prune)

Command run:

  • hg push -r B
  • hg push

Expected exchange:

  • prune for C

4. C. Advance Case

5. D. Partial Information Case

CEDObsmarkersExchange (last edited 2018-03-04 20:25:36 by BorisFeld)