D1652: tests: add a simple test for in-memory rebase
phillco (Phil Cohen)
phabricator at mercurial-scm.org
Mon Dec 11 06:21:53 UTC 2017
phillco created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
This is just a very simple start, but verifies some of the basic cases of an
in-memory rebase.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D1652
AFFECTED FILES
tests/test-imm.t
tests/test-rebase-inmemory.t
CHANGE DETAILS
diff --git a/tests/test-imm.t b/tests/test-rebase-inmemory.t
rename from tests/test-imm.t
rename to tests/test-rebase-inmemory.t
--- a/tests/test-imm.t
+++ b/tests/test-rebase-inmemory.t
@@ -1,13 +1,15 @@
-Setup
$ cat << EOF >> $HGRCPATH
> [extensions]
+ > amend=
> rebase=
> debugdrawdag=$TESTDIR/drawdag.py
> [diff]
> git=1
+ > [alias]
+ > tglog = log -G --template "{rev}: {node|short} '{desc}'\n"
> EOF
-It works well for disparate parents.
+Rebase a simple DAG:
$ hg init repo1
$ cd repo1
$ hg debugdrawdag <<'EOS'
@@ -19,89 +21,37 @@
> EOS
$ hg up -C a
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
- $ hg log -G -T '{node|short}: {rev} ({desc})'
- o 814f6bd05178: 3 (c)
+ $ hg tglog
+ o 3: 814f6bd05178 'c'
|
- | o db0e82a16a62: 2 (b)
+ | o 2: db0e82a16a62 'b'
|/
- o 02952614a83d: 1 (d)
+ o 1: 02952614a83d 'd'
|
- @ b173517d0057: 0 (a)
+ @ 0: b173517d0057 'a'
-
- $ hg export 3
- # HG changeset patch
- # User test
- # Date 0 0
- # Thu Jan 01 00:00:00 1970 +0000
- # Node ID 814f6bd051784616494e0d357c1cf342c4412d9b
- # Parent 02952614a83d315dda1e5f11662dca1c0cdb4de8
- c
-
- diff --git a/c b/c
- new file mode 100644
- --- /dev/null
- +++ b/c
- @@ -0,0 +1,1 @@
- +c
- \ No newline at end of file
-
$ hg cat -r 3 c
c (no-eol)
$ hg cat -r 2 b
b (no-eol)
-
$ hg rebase --inmemory --debug -r b -d c | grep rebasing
rebasing in-memory
rebasing 2:db0e82a16a62 "b" (b)
- $ hg log -G -T '{node|short}: {rev} ({desc})'
- o ca58782ad1e4: 3 (b)
+ $ hg tglog
+ o 3: ca58782ad1e4 'b'
|
- o 814f6bd05178: 2 (c)
+ o 2: 814f6bd05178 'c'
|
- o 02952614a83d: 1 (d)
+ o 1: 02952614a83d 'd'
|
- @ b173517d0057: 0 (a)
+ @ 0: b173517d0057 'a'
$ hg cat -r 3 b
b (no-eol)
- $ hg cat -r 1 c
- c: no such file in rev 02952614a83d
- [1]
- $ hg log -r 3 -T json
- [
- {
- "rev": 3,
- "node": "ca58782ad1e4f59977cdedfd7bca25fe048aaed8",
- "branch": "default",
- "phase": "draft",
- "user": "test",
- "date": [0, 0],
- "desc": "b",
- "bookmarks": [],
- "tags": ["tip"],
- "parents": ["814f6bd051784616494e0d357c1cf342c4412d9b"]
- }
- ]
- $ hg export 3
- # HG changeset patch
- # User test
- # Date 0 0
- # Thu Jan 01 00:00:00 1970 +0000
- # Node ID ca58782ad1e4f59977cdedfd7bca25fe048aaed8
- # Parent 814f6bd051784616494e0d357c1cf342c4412d9b
- b
-
- diff --git a/b b/b
- new file mode 100644
- --- /dev/null
- +++ b/b
- @@ -0,0 +1,1 @@
- +b
- \ No newline at end of file
+ $ hg cat -r 2 c
+ c (no-eol)
-
-Not so well for:
+Case 2:
$ hg init repo2
$ cd repo2
$ hg debugdrawdag <<'EOS'
@@ -111,138 +61,96 @@
> |
> a
> EOS
- $ hg up -C a
- 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
- $ hg log -G -T '{node|short}: {rev} ({desc})'
- o 814f6bd05178: 3 (c)
+
+Add a symlink and executable file:
+ $ hg up -C c
+ 3 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ ln -s somefile e
+ $ echo f > f
+ $ chmod +x f
+ $ hg add e f
+ $ hg amend -q
+ $ hg up -Cq a
+
+Write files to the working copy, and ensure they're still there after the rebase
+ $ echo "abc" > a
+ $ ln -s def b
+ $ echo "ghi" > c
+ $ echo "jkl" > d
+ $ echo "mno" > e
+ $ hg tglog
+ o 3: f56b71190a8f 'c'
|
- | o db0e82a16a62: 2 (b)
+ | o 2: db0e82a16a62 'b'
|/
- o 02952614a83d: 1 (d)
+ o 1: 02952614a83d 'd'
|
- @ b173517d0057: 0 (a)
+ @ 0: b173517d0057 'a'
-
-
$ hg cat -r 3 c
c (no-eol)
$ hg cat -r 2 b
b (no-eol)
- $ hg rebase --inmemory --debug -r b -d a | grep rebasing
+ $ hg cat -r 3 e
+ somefile (no-eol)
+ $ hg rebase --inmemory --debug -s b -d a | grep rebasing
rebasing in-memory
rebasing 2:db0e82a16a62 "b" (b)
- $ hg log -G -T '{node|short}: {rev} ({desc})'
- o fc055c3b4d33: 3 (b)
+ $ hg tglog
+ o 3: fc055c3b4d33 'b'
|
- | o 814f6bd05178: 2 (c)
+ | o 2: f56b71190a8f 'c'
| |
- | o 02952614a83d: 1 (d)
+ | o 1: 02952614a83d 'd'
|/
- @ b173517d0057: 0 (a)
+ @ 0: b173517d0057 'a'
-
-
- $ echo "aaa" > a
- $ echo "aaa" > b
- $ echo "aaa" > c
- $ echo "aaa" > d
- $ echo "aaa" > e
+ $ hg cat -r 2 c
+ c (no-eol)
+ $ hg cat -r 3 b
+ b (no-eol)
$ hg rebase --inmemory --debug -s 1 -d 3 | grep rebasing
rebasing in-memory
rebasing 1:02952614a83d "d" (d)
- rebasing 2:814f6bd05178 "c" (c)
- $ hg log -G -T '{node|short}: {rev} ({desc})'
- o 231d1cda1460: 3 (c)
+ rebasing 2:f56b71190a8f "c"
+ $ hg tglog
+ o 3: 753feb6fd12a 'c'
+ |
+ o 2: 09c044d2cb43 'd'
+ |
+ o 1: fc055c3b4d33 'b'
|
- o 09c044d2cb43: 2 (d)
+ @ 0: b173517d0057 'a'
+
+Ensure working copy files are still there:
+ $ cat a
+ abc
+ $ readlink b
+ def
+ $ cat e
+ mno
+
+Ensure symlink and executable files were rebased properly:
+ $ hg up -Cq 3
+ $ readlink e
+ somefile
+ $ ls -l f | cut -f1 -d ' '
+ -rwxr-xr-x
+
+Rebase the working copy parent, which should default to an on-disk merge even if
+we requested in-memory.
+ $ hg up -C 3
+ 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+ $ hg rebase -r 3 -d 0 --inmemory --debug | grep rebasing
+ rebasing on disk
+ rebasing 3:753feb6fd12a "c" (tip)
+ $ hg tglog
+ @ 3: 844a7de3e617 'c'
|
- o fc055c3b4d33: 1 (b)
- |
- @ b173517d0057: 0 (a)
+ | o 2: 09c044d2cb43 'd'
+ | |
+ | o 1: fc055c3b4d33 'b'
+ |/
+ o 0: b173517d0057 'a'
- $ cat a
- aaa
- $ cat e
- aaa
- $ hg export -r 0::
- # HG changeset patch
- # User test
- # Date 0 0
- # Thu Jan 01 00:00:00 1970 +0000
- # Node ID b173517d005764ebeb1685517a79fe8842b4e194
- # Parent 0000000000000000000000000000000000000000
- a
-
- diff --git a/a b/a
- new file mode 100644
- --- /dev/null
- +++ b/a
- @@ -0,0 +1,1 @@
- +a
- \ No newline at end of file
- # HG changeset patch
- # User test
- # Date 0 0
- # Thu Jan 01 00:00:00 1970 +0000
- # Node ID fc055c3b4d33c6796302568c90cb986fb3fe3ba0
- # Parent b173517d005764ebeb1685517a79fe8842b4e194
- b
-
- diff --git a/b b/b
- new file mode 100644
- --- /dev/null
- +++ b/b
- @@ -0,0 +1,1 @@
- +b
- \ No newline at end of file
- # HG changeset patch
- # User test
- # Date 0 0
- # Thu Jan 01 00:00:00 1970 +0000
- # Node ID 09c044d2cb4341921ce69b4b17a8c38c3ed5e85a
- # Parent fc055c3b4d33c6796302568c90cb986fb3fe3ba0
- d
-
- diff --git a/d b/d
- new file mode 100644
- --- /dev/null
- +++ b/d
- @@ -0,0 +1,1 @@
- +d
- \ No newline at end of file
- # HG changeset patch
- # User test
- # Date 0 0
- # Thu Jan 01 00:00:00 1970 +0000
- # Node ID 231d1cda1460bc732cb22d61ad3485d1f39a9e5c
- # Parent 09c044d2cb4341921ce69b4b17a8c38c3ed5e85a
- c
-
- diff --git a/c b/c
- new file mode 100644
- --- /dev/null
- +++ b/c
- @@ -0,0 +1,1 @@
- +c
- \ No newline at end of file
-
-
-
-
-Rebase the WCP:
- $ hg up -C 3
- 4 files updated, 0 files merged, 0 files removed, 0 files unresolved
- $ hg rebase -r 3 -d 0 --inmemory --debug | grep rebasing
- rebasing on disk
- rebasing 3:231d1cda1460 "c" (tip)
- $ hg log -G -T '{node|short}: {rev} ({desc})'
- @ 72df2b4d62bc: 3 (c)
- |
- | o 09c044d2cb43: 2 (d)
- | |
- | o fc055c3b4d33: 1 (b)
- |/
- o b173517d0057: 0 (a)
-
-
To: phillco, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list