Differences between revisions 6 and 7
Revision 6 as of 2014-01-25 01:04:37
Size: 3403
Comment:
Revision 7 as of 2014-01-25 01:06:58
Size: 3409
Comment:
Deletions are marked like this. Additions are marked like this.
Line 25: Line 25:
    o ← a changeset,      ← a changeset,
Line 84: Line 84:
  o B    B
Line 157: Line 157:
  o B    B

List of case and expected behavior when exchanging obsolesence marker

/!\ This page is intended for developer

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…

    ○ ← a changeset,
    ● ← a changeset that exist remotly before the push.
    x ← pruned changeset
    ø ← obsolete changeset with a precursors
    ◔ ← 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

  ○ 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
  |
  ○ 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

C.1 Multiple pruned changeset atop each other

  x B
  |
  x A
  |
  ● O

Marker exist from:

  • A (prune)
  • B (prune)

Command run:

  • hg push -r O
  • hg push

Expected exchange:

  • A (prune)
  • B (prune)

C.2 Pruned changeset on precursors

  B x
    |
  A ø⇠◔ A'
    |/
    ● O

Marker exist from:

  • A' succeed to A
  • B (prune)

Command run:

  • hg push -r A'
  • hg push

Expected exchange:

  • A ø⇠o A'

  • B (prune)

C.3 Pruned changeset on precursors of another pruned one

  B x
    |
  A ø⇠◔ A'
    |/
    ● O

Marker exist from:

  • A' succeed to A
  • A' (prune
  • B (prune)

Command run:

  • hg push -r O
  • hg push

Expected exchange:

  • A ø⇠o A'

  • B (prune)

D. Partial Information Case

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