sapling/eden/scm/tests/test-absorb-rename.t
Jun Wu 9bf6b674a6 config: use Rust graph render as default
Summary: Change the legacy Python graph render to Rust renderer.

Reviewed By: DurhamG

Differential Revision: D24317802

fbshipit-source-id: 4c3dc3a6dd02b7ebe79596a8e77f4b6b139d2e20
2020-10-19 17:07:30 -07:00

295 lines
4.4 KiB
Perl

#chg-compatible
$ configure mutation-norecord
$ enable absorb
$ setconfig diff.git=1
$ sedi() { # workaround check-code
> pattern="$1"
> shift
> for i in "$@"; do
> sed "$pattern" "$i" > "$i".tmp
> mv "$i".tmp "$i"
> done
> }
rename a to b, then b to a
$ hg init repo1
$ cd repo1
$ echo 1 > a
$ hg ci -A a -m 1
$ hg mv a b
$ echo 2 >> b
$ hg ci -m 2
$ hg mv b a
$ echo 3 >> a
$ hg ci -m 3
$ hg annotate -ncf a
0 eff892de26ec a: 1
1 bf56e1f4f857 b: 2
2 0b888b00216c a: 3
$ sedi 's/$/a/' a
$ hg absorb -aq
$ hg status
$ hg annotate -ncf a
3 5d1c5620e6f2 a: 1a
4 9a14ffe67ae9 b: 2a
5 9191d121a268 a: 3a
when the first changeset is public
$ hg debugmakepublic -r 'max(desc(1))'
$ sedi 's/a/A/' a
$ hg absorb -aq
$ hg diff
diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,3 +1,3 @@
-1a
+1A
2A
3A
copy a to b
$ cd ..
$ hg init repo2
$ cd repo2
$ echo 1 > a
$ hg ci -A a -m 1
$ hg cp a b
$ echo 2 >> b
$ hg ci -m 2
$ hg log -T '{node|short} {desc}\n'
17b72129ab68 2
eff892de26ec 1
$ sedi 's/$/a/' a
$ sedi 's/$/b/' b
$ hg absorb -aq
$ hg diff
diff --git a/b b/b
--- a/b
+++ b/b
@@ -1,2 +1,2 @@
-1
+1b
2b
copy b to a
$ cd ..
$ hg init repo3
$ cd repo3
$ echo 1 > b
$ hg ci -A b -m 1
$ hg cp b a
$ echo 2 >> a
$ hg ci -m 2
$ hg log -T '{node|short} {desc}\n'
e62c256d8b24 2
55105f940d5c 1
$ sedi 's/$/a/' a
$ sedi 's/$/a/' b
$ hg absorb -aq
$ hg diff
diff --git a/a b/a
--- a/a
+++ b/a
@@ -1,2 +1,2 @@
-1
+1a
2a
"move" b to both a and c, follow a - sorted alphabetically
$ cd ..
$ hg init repo4
$ cd repo4
$ echo 1 > b
$ hg ci -A b -m 1
$ hg cp b a
$ hg cp b c
$ hg rm b
$ echo 2 >> a
$ echo 3 >> c
$ hg commit -m cp
$ hg log -T '{node|short} {desc}\n'
366daad8e679 cp
55105f940d5c 1
$ sedi 's/$/a/' a
$ sedi 's/$/c/' c
$ hg absorb -aq
$ hg log -G -p -T '{node|short} {desc}\n'
@ 70606019f91b cp
diff --git a/b b/a
rename from b
rename to a
--- a/b
+++ b/a
@@ -1,1 +1,2 @@
1a
+2a
diff --git a/b b/c
copy from b
copy to c
--- a/b
+++ b/c
@@ -1,1 +1,2 @@
-1a
+1
+3c
o bfb67c3539c1 1
diff --git a/b b/b
new file mode 100644
--- /dev/null
+++ b/b
@@ -0,0 +1,1 @@
+1a
run absorb again would apply the change to c
$ hg absorb -aq
$ hg log -G -p -T '{node|short} {desc}\n'
@ 8bd536cce368 cp
diff --git a/b b/a
rename from b
rename to a
--- a/b
+++ b/a
@@ -1,1 +1,2 @@
1a
+2a
diff --git a/b b/c
copy from b
copy to c
--- a/b
+++ b/c
@@ -1,1 +1,2 @@
-1a
+1c
+3c
o bfb67c3539c1 1
diff --git a/b b/b
new file mode 100644
--- /dev/null
+++ b/b
@@ -0,0 +1,1 @@
+1a
"move" b to a, c and d, follow d if a gets renamed to e, and c is deleted
$ cd ..
$ hg init repo5
$ cd repo5
$ echo 1 > b
$ hg ci -A b -m 1
$ hg cp b a
$ hg cp b c
$ hg cp b d
$ hg rm b
$ echo 2 >> a
$ echo 3 >> c
$ echo 4 >> d
$ hg commit -m cp
$ hg mv a e
$ hg rm c
$ hg commit -m mv
$ hg log -T '{node|short} {desc}\n'
49911557c471 mv
7bc3d43ede83 cp
55105f940d5c 1
$ sedi 's/$/e/' e
$ sedi 's/$/d/' d
$ hg absorb -aq
$ hg diff
diff --git a/e b/e
--- a/e
+++ b/e
@@ -1,2 +1,2 @@
-1
+1e
2e
$ hg log -G -p -T '{node|short} {desc}\n'
@ 34be9b0c786e mv
diff --git a/c b/c
deleted file mode 100644
--- a/c
+++ /dev/null
@@ -1,2 +0,0 @@
-1
-3
diff --git a/a b/e
rename from a
rename to e
o 13e56db5948d cp
diff --git a/b b/a
rename from b
rename to a
--- a/b
+++ b/a
@@ -1,1 +1,2 @@
-1d
+1
+2e
diff --git a/b b/c
copy from b
copy to c
--- a/b
+++ b/c
@@ -1,1 +1,2 @@
-1d
+1
+3
diff --git a/b b/d
copy from b
copy to d
--- a/b
+++ b/d
@@ -1,1 +1,2 @@
1d
+4d
o 0037613a5dc6 1
diff --git a/b b/b
new file mode 100644
--- /dev/null
+++ b/b
@@ -0,0 +1,1 @@
+1d