mirror of
https://github.com/facebook/sapling.git
synced 2024-10-12 01:39:21 +03:00
3e592b81ae
Summary: When you get an error, let's print the number of conflicts in each file. This will give the user some sense of how much work they have to do. The code change is entirely in `filemerge.py`, and `tests/test-merge-conflict-count.t` adds a new test. Reviewed By: quark-zju Differential Revision: D9815243 fbshipit-source-id: 1b73a1db293902ac7242997a7d6ae09478344068
208 lines
3.8 KiB
Perl
208 lines
3.8 KiB
Perl
$ . helpers-usechg.sh
|
|
|
|
$ enable amend rebase
|
|
$ setconfig experimental.evolution.allowdivergence=True
|
|
$ setconfig experimental.evolution="createmarkers, allowunstable"
|
|
$ mkcommit() {
|
|
> echo "$1" > "$1"
|
|
> hg add "$1"
|
|
> hg ci -m "add $1"
|
|
> }
|
|
|
|
Restack does topological sort and only rebases "D" once:
|
|
|
|
$ newrepo
|
|
$ hg debugdrawdag<<'EOS'
|
|
> D
|
|
> |
|
|
> C
|
|
> |
|
|
> B
|
|
> |
|
|
> A
|
|
> EOS
|
|
$ hg update B -q
|
|
$ hg commit --amend -m B2 -q --no-rebase 2>/dev/null
|
|
$ hg tag --local B2
|
|
$ hg rebase -r C -d B2 -q
|
|
$ hg commit --amend -m B3 -q --no-rebase 2>/dev/null
|
|
$ hg tag --local B3
|
|
$ showgraph
|
|
@ 6 da1d4fe88e84 B3
|
|
|
|
|
| o 5 ca53c8ceb284 C
|
|
| |
|
|
| x 4 fdcbd16a7d51 B2
|
|
|/
|
|
| o 3 f585351a92f8 D
|
|
| |
|
|
| x 2 26805aba1e60 C
|
|
| |
|
|
| x 1 112478962961 B
|
|
|/
|
|
o 0 426bada5c675 A
|
|
$ hg rebase --restack
|
|
rebasing 5:ca53c8ceb284 "C"
|
|
rebasing 3:f585351a92f8 "D" (D)
|
|
$ showgraph
|
|
o 8 981f3734c126 D
|
|
|
|
|
o 7 bab9c1b0a249 C
|
|
|
|
|
@ 6 da1d4fe88e84 B3
|
|
|
|
|
| x 4 fdcbd16a7d51 B2
|
|
|/
|
|
| x 3 f585351a92f8 D
|
|
| |
|
|
| x 2 26805aba1e60 C
|
|
| |
|
|
| x 1 112478962961 B
|
|
|/
|
|
o 0 426bada5c675 A
|
|
|
|
Restack will only restack the "current" stack and leave other stacks untouched.
|
|
|
|
$ newrepo
|
|
$ hg debugdrawdag<<'EOS'
|
|
> D H K
|
|
> | | |
|
|
> B C F G J L # amend: B -> C
|
|
> |/ |/ |/ # amend: F -> G
|
|
> A E I Z # amend: J -> L
|
|
> EOS
|
|
|
|
$ hg phase --public -r Z+I+A+E
|
|
|
|
$ hg update -q Z
|
|
$ hg rebase --restack
|
|
nothing to restack
|
|
[1]
|
|
|
|
$ hg update -q D
|
|
$ hg rebase --restack
|
|
rebasing 10:be0ef73c17ad "D" (D)
|
|
|
|
$ hg update -q G
|
|
$ hg rebase --restack
|
|
rebasing 11:cc209258a732 "H" (H)
|
|
|
|
$ hg update -q I
|
|
$ hg rebase --restack
|
|
rebasing 12:59760668f0e1 "K" (K)
|
|
|
|
$ rm .hg/localtags
|
|
$ showgraph
|
|
o 15 c97827ce80f6 K
|
|
|
|
|
| o 14 47528c67632b H
|
|
| |
|
|
| | o 13 5cb8c357af9e D
|
|
| | |
|
|
o | | 9 a975bfef72d2 L
|
|
| | |
|
|
| o | 7 889f49cd29f6 G
|
|
| | |
|
|
| | o 5 dc0947a82db8 C
|
|
| | |
|
|
| | | o 3 48b9aae0607f Z
|
|
| | |
|
|
@ | | 2 02a9ac6a13a6 I
|
|
/ /
|
|
o / 1 e8e0a81d950f E
|
|
/
|
|
o 0 426bada5c675 A
|
|
|
|
The "prune" cases.
|
|
|
|
$ newrepo
|
|
$ hg debugdrawdag<<'EOS'
|
|
> D E
|
|
> |/
|
|
> C
|
|
> | # amend: F -> F2
|
|
> B G H # prune: A, C, F2
|
|
> | |/
|
|
> A F F2
|
|
> EOS
|
|
|
|
$ hg update -q B
|
|
$ hg rebase --restack
|
|
rebasing 3:112478962961 "B" (B)
|
|
rebasing 7:f585351a92f8 "D" (D)
|
|
rebasing 8:78d2dca436b2 "E" (E tip)
|
|
|
|
$ hg update -q H
|
|
$ hg rebase --restack
|
|
rebasing 4:8fdb2c1feb20 "G" (G)
|
|
rebasing 5:02ac06fe83b9 "H" (H)
|
|
|
|
$ rm .hg/localtags
|
|
$ showgraph
|
|
@ 13 3e1fefc3c8db H
|
|
|
|
o 12 0706cfb95b41 G
|
|
|
|
o 11 8c0ccd1582b3 E
|
|
|
|
|
| o 10 f88ac1d7b477 D
|
|
|/
|
|
o 9 653ee58caf75 B
|
|
|
|
|
|
|
|
Restack could resume after resolving merge conflicts.
|
|
|
|
$ newrepo
|
|
$ hg debugdrawdag<<'EOS'
|
|
> F G # F/C = F # cause conflict
|
|
> | | # G/E = G # cause conflict
|
|
> B C D E # amend: B -> C
|
|
> |/ |/ # amend: D -> E
|
|
> | /
|
|
> | /
|
|
> | /
|
|
> |/
|
|
> A
|
|
> EOS
|
|
|
|
$ hg update -q F
|
|
$ hg rebase --restack
|
|
rebasing 5:ed8545a5c22a "F" (F)
|
|
merging C
|
|
warning: 1 conflicts while merging C! (edit, then use 'hg resolve --mark')
|
|
unresolved conflicts (see hg resolve, then hg rebase --continue)
|
|
[1]
|
|
|
|
$ rm .hg/localtags
|
|
|
|
$ echo R > C
|
|
$ hg resolve --mark -q
|
|
continue: hg rebase --continue
|
|
$ hg rebase --continue
|
|
rebasing 5:ed8545a5c22a "F"
|
|
rebasing 6:4d1ef7d890c5 "G" (tip)
|
|
merging E
|
|
warning: 1 conflicts while merging E! (edit, then use 'hg resolve --mark')
|
|
unresolved conflicts (see hg resolve, then hg rebase --continue)
|
|
[1]
|
|
|
|
$ echo R > E
|
|
$ hg resolve --mark -q
|
|
continue: hg rebase --continue
|
|
$ hg rebase --continue
|
|
already rebased 5:ed8545a5c22a "F" as 2282fe522d5c
|
|
rebasing 6:4d1ef7d890c5 "G"
|
|
|
|
$ showgraph
|
|
o 8 3b00517bf275 G
|
|
|
|
|
| @ 7 2282fe522d5c F
|
|
| |
|
|
o | 4 7fb047a69f22 E
|
|
| |
|
|
| o 2 dc0947a82db8 C
|
|
|/
|
|
o 0 426bada5c675 A
|
|
|