sapling/tests/test-fbamend-split.t
Jun Wu 99386e40fd inhibit: update existing code to work with the rewritten version
Summary:
debuginhibit was removed since we no longer have a separate inhibit state.

smartlog hack about changing "o" to "x" was removed since "obsolete()"
revset is correct and the hack is unnecessary now.

directaccess was removed from tests since inhibit does not depend on it.

`- obsolete()` was added to some revsets to avoid divergence and other
surprises.

Use `inhibit.revive` API in infinitepush and reset to revive changesets
properly.

Remove various hacky code that mangle inhibit state in corner cases.

Most test changes are `o` changed to `x` in output since we draw
`obsolete()` state correctly now. `test-infinitepush-backup-remotefilelog.t`
change was because output could be `bytes/sec` instead of `KB/sec`.

Test Plan: arc unit

Reviewers: #mercurial, kulshrax

Reviewed By: kulshrax

Subscribers: kulshrax, medson, mjpieters

Differential Revision: https://phabricator.intern.facebook.com/D5391361

Signature: t1:5391361:1499722618:d3c1cf629f0c59ecdf1dfd5e653c1eb6176646b8
2017-07-10 15:45:31 -07:00

361 lines
6.7 KiB
Perl

Set up test environment.
$ cat >> $HGRCPATH << EOF
> [extensions]
> fbamend=$TESTDIR/../hgext3rd/fbamend
> inhibit=$TESTDIR/../hgext3rd/inhibit.py
> rebase=
> strip=
> [experimental]
> evolution = createmarkers, allowunstable
> [ui]
> interactive = true
> [fbamend]
> safestrip = false
> EOF
$ mkcommit() {
> echo "${1}1" > "${1}1"
> echo "${1}2" > "${1}2"
> hg add "${1}1" "${1}2"
> hg ci -m "add ${1}1 and ${1}2"
> }
$ reset() {
> cd ..
> rm -rf repo
> hg init repo
> cd repo
> }
$ showgraph() {
> hg log --graph -T "{rev} {desc|firstline}" | sed \$d
> }
Initialize repo.
$ hg init repo && cd repo
$ mkcommit a
$ mkcommit b
$ mkcommit c
$ mkcommit d
$ showgraph
@ 3 add d1 and d2
|
o 2 add c1 and c2
|
o 1 add b1 and b2
|
o 0 add a1 and a2
Test that split behaves correctly on error.
$ hg split -r 0 1 2
abort: more than one revset is given
(use either `hg split <rs>` or `hg split --rev <rs>`, not both)
[255]
Test basic case of splitting a head.
$ hg split << EOF
> y
> y
> n
> y
> EOF
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
adding d1
adding d2
diff --git a/d1 b/d1
new file mode 100644
examine changes to 'd1'? [Ynesfdaq?] y
@@ -0,0 +1,1 @@
+d1
record change 1/2 to 'd1'? [Ynesfdaq?] y
diff --git a/d2 b/d2
new file mode 100644
examine changes to 'd2'? [Ynesfdaq?] n
created new head
Done splitting? [yN] y
$ showgraph
@ 5 add d1 and d2
|
o 4 add d1 and d2
|
o 2 add c1 and c2
|
o 1 add b1 and b2
|
o 0 add a1 and a2
Split in the middle of a stack.
$ hg up 2
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
$ hg split << EOF
> y
> y
> n
> y
> EOF
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
adding c1
adding c2
diff --git a/c1 b/c1
new file mode 100644
examine changes to 'c1'? [Ynesfdaq?] y
@@ -0,0 +1,1 @@
+c1
record change 1/2 to 'c1'? [Ynesfdaq?] y
diff --git a/c2 b/c2
new file mode 100644
examine changes to 'c2'? [Ynesfdaq?] n
created new head
Done splitting? [yN] y
rebasing 4:* "add d1 and d2" (glob)
rebasing 5:* "add d1 and d2"* (glob)
$ showgraph
o 9 add d1 and d2
|
o 8 add d1 and d2
|
@ 7 add c1 and c2
|
o 6 add c1 and c2
|
o 1 add b1 and b2
|
o 0 add a1 and a2
Split with multiple children and using hash.
$ hg up c20c
0 files updated, 0 files merged, 4 files removed, 0 files unresolved
$ mkcommit d
created new head
$ hg split c20c << EOF
> y
> y
> n
> y
> EOF
0 files updated, 0 files merged, 4 files removed, 0 files unresolved
adding a1
adding a2
diff --git a/a1 b/a1
new file mode 100644
examine changes to 'a1'? [Ynesfdaq?] y
@@ -0,0 +1,1 @@
+a1
record change 1/2 to 'a1'? [Ynesfdaq?] y
diff --git a/a2 b/a2
new file mode 100644
examine changes to 'a2'? [Ynesfdaq?] n
created new head
Done splitting? [yN] y
rebasing 1:* "add b1 and b2" (glob)
rebasing 6:* "add c1 and c2" (glob)
rebasing 7:* "add c1 and c2" (glob)
rebasing 8:* "add d1 and d2" (glob)
rebasing 9:* "add d1 and d2" (glob)
rebasing 10:* "add d1 and d2"* (glob)
$ showgraph
o 18 add d1 and d2
|
| o 17 add d1 and d2
| |
| o 16 add d1 and d2
| |
| o 15 add c1 and c2
| |
| o 14 add c1 and c2
| |
| o 13 add b1 and b2
|/
@ 12 add a1 and a2
|
o 11 add a1 and a2
Split using revset.
$ hg strip 18
saved backup bundle to * (glob)
$ hg split "children(.)" << EOF
> y
> y
> n
> y
> EOF
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
adding b1
adding b2
diff --git a/b1 b/b1
new file mode 100644
examine changes to 'b1'? [Ynesfdaq?] y
@@ -0,0 +1,1 @@
+b1
record change 1/2 to 'b1'? [Ynesfdaq?] y
diff --git a/b2 b/b2
new file mode 100644
examine changes to 'b2'? [Ynesfdaq?] n
created new head
Done splitting? [yN] y
rebasing 14:* "add c1 and c2" (glob)
rebasing 15:* "add c1 and c2" (glob)
rebasing 16:* "add d1 and d2" (glob)
rebasing 17:* "add d1 and d2"* (glob)
$ showgraph
o 23 add d1 and d2
|
o 22 add d1 and d2
|
o 21 add c1 and c2
|
o 20 add c1 and c2
|
@ 19 add b1 and b2
|
o 18 add b1 and b2
|
o 12 add a1 and a2
|
o 11 add a1 and a2
o 10 add d1 and d2
|
x 0 add a1 and a2
Test that command aborts when given multiple commits.
$ hg split 11 12
abort: more than one revset is given
(use either `hg split <rs>` or `hg split --rev <rs>`, not both)
[255]
Test --no-rebase flag.
$ mkcommit e
created new head
$ hg rebase -s 20 -d .
rebasing 20:* "add c1 and c2" (glob)
rebasing 21:* "add c1 and c2" (glob)
rebasing 22:* "add d1 and d2" (glob)
rebasing 23:* "add d1 and d2" (glob)
$ showgraph
o 28 add d1 and d2
|
o 27 add d1 and d2
|
o 26 add c1 and c2
|
o 25 add c1 and c2
|
@ 24 add e1 and e2
|
o 19 add b1 and b2
|
o 18 add b1 and b2
|
o 12 add a1 and a2
|
o 11 add a1 and a2
o 10 add d1 and d2
|
x 0 add a1 and a2
$ hg split --no-rebase << EOF
> y
> y
> n
> y
> EOF
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
adding e1
adding e2
diff --git a/e1 b/e1
new file mode 100644
examine changes to 'e1'? [Ynesfdaq?] y
@@ -0,0 +1,1 @@
+e1
record change 1/2 to 'e1'? [Ynesfdaq?] y
diff --git a/e2 b/e2
new file mode 100644
examine changes to 'e2'? [Ynesfdaq?] n
created new head
Done splitting? [yN] y
$ showgraph
@ 30 add e1 and e2
|
o 29 add e1 and e2
|
| o 28 add d1 and d2
| |
| o 27 add d1 and d2
| |
| o 26 add c1 and c2
| |
| o 25 add c1 and c2
| |
| x 24 add e1 and e2
|/
o 19 add b1 and b2
|
o 18 add b1 and b2
|
o 12 add a1 and a2
|
o 11 add a1 and a2
o 10 add d1 and d2
|
x 0 add a1 and a2
Test that bookmarks are correctly moved.
$ reset
$ mkcommit a
$ hg book test1
$ hg book test2
$ hg bookmarks
test1 0:* (glob)
* test2 0:* (glob)
$ hg split << EOF
> y
> y
> n
> y
> EOF
(leaving bookmark test2)
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
adding a1
adding a2
diff --git a/a1 b/a1
new file mode 100644
examine changes to 'a1'? [Ynesfdaq?] y
@@ -0,0 +1,1 @@
+a1
record change 1/2 to 'a1'? [Ynesfdaq?] y
diff --git a/a2 b/a2
new file mode 100644
examine changes to 'a2'? [Ynesfdaq?] n
created new head
Done splitting? [yN] y
$ showgraph
@ 2 add a1 and a2
|
o 1 add a1 and a2
$ hg bookmarks
test1 2:* (glob)
* test2 2:* (glob)