Size: 3358
Comment:
|
Size: 3403
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 26: | Line 26: |
* ← a changeset that exist remotly before the push. | ● ← a changeset that exist remotly before the push. |
Line 29: | Line 29: |
@ ← changeset being pushed | ◔ ← changeset being pushed |
Line 39: | Line 39: |
@ A | * O |
◔ A | ● O |
Line 60: | Line 60: |
@ B | @ A | * O |
◔ B | ◔ A | ● O |
Line 85: | Line 85: |
| @ A | | ◔ A |
Line 87: | Line 87: |
* O | ● O |
Line 113: | Line 113: |
@ A | * O |
◔ A | ● O |
Line 136: | Line 136: |
* O | ● O |
Line 158: | Line 158: |
| @ A | | ◔ A |
Line 160: | Line 160: |
* O | ● O |
Line 184: | Line 184: |
| * B | | ● B |
Line 186: | Line 186: |
| * A | | ● A |
Line 188: | Line 188: |
* O | ● O |
Line 213: | Line 213: |
* O | ● O |
Line 236: | Line 236: |
A ø⇠@ A' | A ø⇠◔ A' |
Line 238: | Line 238: |
* O | ● O |
Line 261: | Line 261: |
A ø⇠x A' | A ø⇠◔ A' |
Line 263: | Line 263: |
* O | ● O |
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 ← pruned changeset ø ← obsolete changeset with a precursors ◔ ← 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.2. 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.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.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.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.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
4.1. 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)
4.2. 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)
4.3. 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)