Size: 3409
Comment:
|
Size: 3427
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 27: | Line 27: |
x ← pruned changeset | ✕ ← pruned changeset |
Line 111: | Line 111: |
x B | ✕ B |
Line 134: | Line 134: |
x A | ✕ A |
Line 155: | Line 155: |
x C | ✕ C |
Line 183: | Line 183: |
x C | ✕ C |
Line 209: | Line 209: |
x B | ✕ B |
Line 211: | Line 211: |
x A | ✕ A |
Line 234: | Line 234: |
B x | B ✕ |
Line 259: | Line 259: |
B x | B ✕ |
List of case and expected behavior when exchanging obsolesence marker
This page is intended for developer
Contents
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. ✕ ← 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
✕ 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
✕ 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
✕ 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
✕ 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
✕ B | ✕ 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 ✕ | 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 ✕ | 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)