# HG changeset patch # User Pierre-Yves David # Date 1495144270 -7200 # Node ID fd24f1c7accd6b910d1a616637cbba6855330dbd # Parent 765b2561fa90e103db54704c09d138d8c174a083# Parent ee321b87c548bd1231e3aec544a14c34ed6b704d merge with future 6.2.0 The new 'olog' command is not working with 3.9 so we skill all mentions of it in the tests. This also apply to the topic extensions. diff -r 765b2561fa90 -r fd24f1c7accd tests/test-check-setup-manifest.t --- a/tests/test-check-setup-manifest.t Thu May 18 23:35:16 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +0,0 @@ -#require test-repo - - $ checkcm() { - > if ! (which check-manifest > /dev/null); then - > echo skipped: missing tool: check-manifest; - > exit 80; - > fi; - > }; - $ checkcm - $ cat << EOF >> $HGRCPATH - > [experimental] - > evolution=all - > EOF - -Run check manifest: - - $ cd $TESTDIR/.. - $ check-manifest - lists of files in version control and sdist match diff -r 765b2561fa90 -r fd24f1c7accd tests/test-discovery-obshashrange.t --- a/tests/test-discovery-obshashrange.t Thu May 18 23:35:16 2017 +0200 +++ b/tests/test-discovery-obshashrange.t Thu May 18 23:51:10 2017 +0200 @@ -90,37 +90,31 @@ * @0000000000000000000000000000000000000000 (*)> writing .hg/cache/tags2-visible with 0 tags (glob) * @0000000000000000000000000000000000000000 (*)> log -G exited 0 after *.?? seconds (glob) * @0000000000000000000000000000000000000000 (*)> debugobsolete aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 66f7d451a68b85ed82ff5fcc254daf50c74144bd (glob) - * @0000000000000000000000000000000000000000 (*)> alias 'debugobsolete' expands to 'debugobsolete -d '0 0'' (glob) * @0000000000000000000000000000000000000000 (*)> obshashcache reset - new markers affect cached ranges (glob) * @0000000000000000000000000000000000000000 (*)> updated evo-ext-obshashrange in *.???? seconds (0r, 1o) (glob) * @0000000000000000000000000000000000000000 (*)> updated evo-ext-obscache in *.???? seconds (0r, 1o) (glob) * @0000000000000000000000000000000000000000 (*)> debugobsolete aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 66f7d451a68b85ed82ff5fcc254daf50c74144bd exited 0 after *.?? seconds (glob) * @0000000000000000000000000000000000000000 (*)> debugobsolete bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 01241442b3c2bf3211e593b549c655ea65b295e3 (glob) - * @0000000000000000000000000000000000000000 (*)> alias 'debugobsolete' expands to 'debugobsolete -d '0 0'' (glob) * @0000000000000000000000000000000000000000 (*)> obshashcache reset - new markers affect cached ranges (glob) * @0000000000000000000000000000000000000000 (*)> updated evo-ext-obshashrange in *.???? seconds (0r, 1o) (glob) * @0000000000000000000000000000000000000000 (*)> updated evo-ext-obscache in *.???? seconds (0r, 1o) (glob) * @0000000000000000000000000000000000000000 (*)> debugobsolete bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 01241442b3c2bf3211e593b549c655ea65b295e3 exited 0 after *.?? seconds (glob) * @0000000000000000000000000000000000000000 (*)> debugobsolete cccccccccccccccccccccccccccccccccccccccc bebd167eb94d257ace0e814aeb98e6972ed2970d (glob) - * @0000000000000000000000000000000000000000 (*)> alias 'debugobsolete' expands to 'debugobsolete -d '0 0'' (glob) * @0000000000000000000000000000000000000000 (*)> obshashcache reset - new markers affect cached ranges (glob) * @0000000000000000000000000000000000000000 (*)> updated evo-ext-obshashrange in *.???? seconds (0r, 1o) (glob) * @0000000000000000000000000000000000000000 (*)> updated evo-ext-obscache in *.???? seconds (0r, 1o) (glob) * @0000000000000000000000000000000000000000 (*)> debugobsolete cccccccccccccccccccccccccccccccccccccccc bebd167eb94d257ace0e814aeb98e6972ed2970d exited 0 after *.?? seconds (glob) * @0000000000000000000000000000000000000000 (*)> debugobsolete dddddddddddddddddddddddddddddddddddddddd c8d03c1b5e94af74b772900c58259d2e08917735 (glob) - * @0000000000000000000000000000000000000000 (*)> alias 'debugobsolete' expands to 'debugobsolete -d '0 0'' (glob) * @0000000000000000000000000000000000000000 (*)> obshashcache reset - new markers affect cached ranges (glob) * @0000000000000000000000000000000000000000 (*)> updated evo-ext-obshashrange in *.???? seconds (0r, 1o) (glob) * @0000000000000000000000000000000000000000 (*)> updated evo-ext-obscache in *.???? seconds (0r, 1o) (glob) * @0000000000000000000000000000000000000000 (*)> debugobsolete dddddddddddddddddddddddddddddddddddddddd c8d03c1b5e94af74b772900c58259d2e08917735 exited 0 after *.?? seconds (glob) * @0000000000000000000000000000000000000000 (*)> debugobsolete eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee 4de32a90b66cd083ebf3c00b41277aa7abca51dd (glob) - * @0000000000000000000000000000000000000000 (*)> alias 'debugobsolete' expands to 'debugobsolete -d '0 0'' (glob) * @0000000000000000000000000000000000000000 (*)> obshashcache reset - new markers affect cached ranges (glob) * @0000000000000000000000000000000000000000 (*)> updated evo-ext-obshashrange in *.???? seconds (0r, 1o) (glob) * @0000000000000000000000000000000000000000 (*)> updated evo-ext-obscache in *.???? seconds (0r, 1o) (glob) * @0000000000000000000000000000000000000000 (*)> debugobsolete eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee 4de32a90b66cd083ebf3c00b41277aa7abca51dd exited 0 after *.?? seconds (glob) * @0000000000000000000000000000000000000000 (*)> debugobsolete (glob) - * @0000000000000000000000000000000000000000 (*)> alias 'debugobsolete' expands to 'debugobsolete -d '0 0'' (glob) * @0000000000000000000000000000000000000000 (*)> debugobsolete exited 0 after *.?? seconds (glob) * @0000000000000000000000000000000000000000 (*)> blackbox (glob) $ rm .hg/blackbox.log @@ -307,7 +301,6 @@ ffffffffffffffffffffffffffffffffffffffff 45f8b879de922f6a6e620ba04205730335b6fc7e 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} $ hg blackbox * @0000000000000000000000000000000000000000 (*)> debugobsolete (glob) - * @0000000000000000000000000000000000000000 (*)> alias 'debugobsolete' expands to 'debugobsolete -d '0 0'' (glob) * @0000000000000000000000000000000000000000 (*)> debugobsolete exited 0 after *.?? seconds (glob) * @0000000000000000000000000000000000000000 (*)> up (glob) * @bebd167eb94d257ace0e814aeb98e6972ed2970d (*)> up exited 0 after *.?? seconds (glob) @@ -320,7 +313,6 @@ * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-obshashrange in *.???? seconds (1r, 0o) (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> commit -m foo exited 0 after *.?? seconds (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobsolete ffffffffffffffffffffffffffffffffffffffff 45f8b879de922f6a6e620ba04205730335b6fc7e (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> alias 'debugobsolete' expands to 'debugobsolete -d '0 0'' (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> obshashcache reset - new markers affect cached ranges (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-obshashrange in *.???? seconds (0r, 1o) (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-obscache in *.???? seconds (0r, 1o) (glob) @@ -333,13 +325,11 @@ * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> writing .hg/cache/tags2-visible with 0 tags (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> log -G exited 0 after *.?? seconds (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobsolete 111111111111111aaaaaaaaa1111111111111111 66f7d451a68b85ed82ff5fcc254daf50c74144bd (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> alias 'debugobsolete' expands to 'debugobsolete -d '0 0'' (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> obshashcache reset - new markers affect cached ranges (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-obshashrange in *.???? seconds (0r, 1o) (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-obscache in *.???? seconds (0r, 1o) (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobsolete 111111111111111aaaaaaaaa1111111111111111 66f7d451a68b85ed82ff5fcc254daf50c74144bd exited 0 after *.?? seconds (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobsolete 22222222222222222bbbbbbbbbbbbb2222222222 2dc09a01254db841290af0538aa52f6f52c776e3 (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> alias 'debugobsolete' expands to 'debugobsolete -d '0 0'' (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> obshashcache reset - new markers affect cached ranges (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-obshashrange in *.???? seconds (0r, 1o) (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> updated evo-ext-obscache in *.???? seconds (0r, 1o) (glob) @@ -389,17 +379,14 @@ $ hg -R ../server blackbox * @0000000000000000000000000000000000000000 (*)> debugobsolete --rev ::tip (glob) - * @0000000000000000000000000000000000000000 (*)> alias 'debugobsolete' expands to 'debugobsolete -d '0 0'' (glob) * @0000000000000000000000000000000000000000 (*)> writing .hg/cache/tags2-visible with 0 tags (glob) * @0000000000000000000000000000000000000000 (*)> -R ../server/ debugobsolete --rev ::tip exited 0 after *.?? seconds (glob) * @0000000000000000000000000000000000000000 (*)> debugobsolete aaaaaaa11111111aaaaaaaaa1111111111111111 66f7d451a68b85ed82ff5fcc254daf50c74144bd (glob) - * @0000000000000000000000000000000000000000 (*)> alias 'debugobsolete' expands to 'debugobsolete -d '0 0'' (glob) * @0000000000000000000000000000000000000000 (*)> obshashcache reset - new markers affect cached ranges (glob) * @0000000000000000000000000000000000000000 (*)> updated evo-ext-obshashrange in *.???? seconds (0r, 1o) (glob) * @0000000000000000000000000000000000000000 (*)> updated evo-ext-obscache in *.???? seconds (0r, 1o) (glob) * @0000000000000000000000000000000000000000 (*)> -R ../server debugobsolete aaaaaaa11111111aaaaaaaaa1111111111111111 66f7d451a68b85ed82ff5fcc254daf50c74144bd exited 0 after *.?? seconds (glob) * @0000000000000000000000000000000000000000 (*)> debugobsolete bbbbbbb2222222222bbbbbbbbbbbbb2222222222 bebd167eb94d257ace0e814aeb98e6972ed2970d (glob) - * @0000000000000000000000000000000000000000 (*)> alias 'debugobsolete' expands to 'debugobsolete -d '0 0'' (glob) * @0000000000000000000000000000000000000000 (*)> obshashcache reset - new markers affect cached ranges (glob) * @0000000000000000000000000000000000000000 (*)> updated evo-ext-obshashrange in *.???? seconds (0r, 1o) (glob) * @0000000000000000000000000000000000000000 (*)> updated evo-ext-obscache in *.???? seconds (0r, 1o) (glob) @@ -419,7 +406,6 @@ dddddddddddddddddddddddddddddddddddddddd c8d03c1b5e94af74b772900c58259d2e08917735 0 (Thu Jan 01 00:00:00 1970 +0000) {'user': 'test'} $ hg blackbox * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobsolete (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> alias 'debugobsolete' expands to 'debugobsolete -d '0 0'' (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobsolete exited 0 after *.?? seconds (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> log -G (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> log -G exited 0 after *.?? seconds (glob) @@ -498,7 +484,6 @@ 1 66f7d451a68b 1 1 2 327c7dd73d29 $ hg blackbox * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobsolete --rev ::6 (glob) - * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> alias 'debugobsolete' expands to 'debugobsolete -d '0 0'' (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> writing .hg/cache/tags2-visible with 0 tags (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobsolete --rev ::6 exited 0 after *.?? seconds (glob) * @45f8b879de922f6a6e620ba04205730335b6fc7e (*)> debugobshashrange --subranges --rev heads(all()) (glob) diff -r 765b2561fa90 -r fd24f1c7accd tests/test-evolve-obshistory.t --- a/tests/test-evolve-obshistory.t Thu May 18 23:35:16 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1561 +0,0 @@ -This test file test the various messages when accessing obsolete -revisions. - -Global setup -============ - - $ . $TESTDIR/testlib/common.sh - $ cat >> $HGRCPATH < [ui] - > interactive = true - > [phases] - > publish=False - > [extensions] - > evolve = - > color = - > EOF - -Test output on amended commit -============================= - -Test setup ----------- - - $ hg init $TESTTMP/local-amend - $ cd $TESTTMP/local-amend - $ mkcommit ROOT - $ mkcommit A0 - $ echo 42 >> A0 - $ hg amend -m "A1 - > - > Better commit message" - $ hg log --hidden -G - @ changeset: 3:4ae3a4151de9 - | tag: tip - | parent: 0:ea207398892e - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: A1 - | - | x changeset: 2:f137d23bb3e1 - | | user: test - | | date: Thu Jan 01 00:00:00 1970 +0000 - | | summary: temporary amend commit for 471f378eab4c - | | - | x changeset: 1:471f378eab4c - |/ user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: A0 - | - o changeset: 0:ea207398892e - user: test - date: Thu Jan 01 00:00:00 1970 +0000 - summary: ROOT - -Actual test ------------ - $ hg olog 4ae3a4151de9 - @ 4ae3a4151de9 (3) A1 - | - x 471f378eab4c (1) A0 - rewritten by test (*20*) as 4ae3a4151de9 (glob) - - $ hg olog 4ae3a4151de9 --no-graph -Tjson | python -m json.tool - [ - { - "debugobshistory.markers": [], - "debugobshistory.node": "4ae3a4151de9", - "debugobshistory.rev": 3, - "debugobshistory.shortdescription": "A1" - }, - { - "debugobshistory.markers": [ - { - "debugobshistory.marker_date": [ - *, (glob) - 0 (glob) - ], - "debugobshistory.marker_user": "test", - "debugobshistory.succnodes": [ - "4ae3a4151de9" - ], - "debugobshistory.verb": "rewritten" - } - ], - "debugobshistory.node": "471f378eab4c", - "debugobshistory.rev": 1, - "debugobshistory.shortdescription": "A0" - } - ] - $ hg olog --hidden 471f378eab4c - x 471f378eab4c (1) A0 - rewritten by test (*20*) as 4ae3a4151de9 (glob) - - $ hg olog --hidden 471f378eab4c --no-graph -Tjson | python -m json.tool - [ - { - "debugobshistory.markers": [ - { - "debugobshistory.marker_date": [ - *, (glob) - 0 (glob) - ], - "debugobshistory.marker_user": "test", - "debugobshistory.succnodes": [ - "4ae3a4151de9" - ], - "debugobshistory.verb": "rewritten" - } - ], - "debugobshistory.node": "471f378eab4c", - "debugobshistory.rev": 1, - "debugobshistory.shortdescription": "A0" - } - ] - $ hg update 471f378eab4c - abort: hidden revision '471f378eab4c'! - (use --hidden to access hidden revisions) - [255] - $ hg update --hidden "desc(A0)" - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - working directory parent is obsolete! (471f378eab4c) - (use 'hg evolve' to update to its successor: 4ae3a4151de9) - -Test output with pruned commit -============================== - -Test setup ----------- - - $ hg init $TESTTMP/local-prune - $ cd $TESTTMP/local-prune - $ mkcommit ROOT - $ mkcommit A0 # 0 - $ mkcommit B0 # 1 - $ hg log --hidden -G - @ changeset: 2:0dec01379d3b - | tag: tip - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: B0 - | - o changeset: 1:471f378eab4c - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: A0 - | - o changeset: 0:ea207398892e - user: test - date: Thu Jan 01 00:00:00 1970 +0000 - summary: ROOT - - $ hg prune -r 'desc(B0)' - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - working directory now at 471f378eab4c - 1 changesets pruned - $ hg log --hidden -G - x changeset: 2:0dec01379d3b - | tag: tip - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: B0 - | - @ changeset: 1:471f378eab4c - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: A0 - | - o changeset: 0:ea207398892e - user: test - date: Thu Jan 01 00:00:00 1970 +0000 - summary: ROOT - - -Actual test ------------ - - $ hg olog 'desc(B0)' --hidden - x 0dec01379d3b (2) B0 - pruned by test (*20*) (glob) - - $ hg olog 'desc(B0)' --hidden --no-graph -Tjson | python -m json.tool - [ - { - "debugobshistory.markers": [ - { - "debugobshistory.marker_date": [ - *, (glob) - 0 (glob) - ], - "debugobshistory.marker_user": "test", - "debugobshistory.verb": "pruned" - } - ], - "debugobshistory.node": "0dec01379d3b", - "debugobshistory.rev": 2, - "debugobshistory.shortdescription": "B0" - } - ] - $ hg olog 'desc(A0)' - @ 471f378eab4c (1) A0 - - $ hg olog 'desc(A0)' --no-graph -Tjson | python -m json.tool - [ - { - "debugobshistory.markers": [], - "debugobshistory.node": "471f378eab4c", - "debugobshistory.rev": 1, - "debugobshistory.shortdescription": "A0" - } - ] - $ hg up 1 - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg up 0dec01379d3b - abort: hidden revision '0dec01379d3b'! - (use --hidden to access hidden revisions) - [255] - $ hg up --hidden -r 'desc(B0)' - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - working directory parent is obsolete! (0dec01379d3b) - (use 'hg evolve' to update to its parent successor) - -Test output with splitted commit -================================ - -Test setup ----------- - - $ hg init $TESTTMP/local-split - $ cd $TESTTMP/local-split - $ mkcommit ROOT - $ echo 42 >> a - $ echo 43 >> b - $ hg commit -A -m "A0" - adding a - adding b - $ hg log --hidden -G - @ changeset: 1:471597cad322 - | tag: tip - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: A0 - | - o changeset: 0:ea207398892e - user: test - date: Thu Jan 01 00:00:00 1970 +0000 - summary: ROOT - - $ hg split -r 'desc(A0)' -d "0 0" << EOF - > y - > y - > n - > n - > y - > y - > EOF - 0 files updated, 0 files merged, 2 files removed, 0 files unresolved - adding a - adding b - diff --git a/a b/a - new file mode 100644 - examine changes to 'a'? [Ynesfdaq?] y - - @@ -0,0 +1,1 @@ - +42 - record change 1/2 to 'a'? [Ynesfdaq?] y - - diff --git a/b b/b - new file mode 100644 - examine changes to 'b'? [Ynesfdaq?] n - - created new head - Done splitting? [yN] n - diff --git a/b b/b - new file mode 100644 - examine changes to 'b'? [Ynesfdaq?] y - - @@ -0,0 +1,1 @@ - +43 - record this change to 'b'? [Ynesfdaq?] y - - no more change to split - - $ hg log --hidden -G - @ changeset: 3:f257fde29c7a - | tag: tip - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: A0 - | - o changeset: 2:337fec4d2edc - | parent: 0:ea207398892e - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: A0 - | - | x changeset: 1:471597cad322 - |/ user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: A0 - | - o changeset: 0:ea207398892e - user: test - date: Thu Jan 01 00:00:00 1970 +0000 - summary: ROOT - -Actual test ------------ - -Check that debugobshistory on splitted commit show both targets - $ hg olog 471597cad322 --hidden - x 471597cad322 (1) A0 - rewritten by test (*20*) as 337fec4d2edc, f257fde29c7a (glob) - - $ hg olog 471597cad322 --hidden --no-graph -Tjson | python -m json.tool - [ - { - "debugobshistory.markers": [ - { - "debugobshistory.marker_date": [ - *, (glob) - 0 (glob) - ], - "debugobshistory.marker_user": "test", - "debugobshistory.succnodes": [ - "337fec4d2edc", - "f257fde29c7a" - ], - "debugobshistory.verb": "rewritten" - } - ], - "debugobshistory.node": "471597cad322", - "debugobshistory.rev": 1, - "debugobshistory.shortdescription": "A0" - } - ] -Check that debugobshistory on the first successor after split show -the revision plus the splitted one - $ hg olog 337fec4d2edc - o 337fec4d2edc (2) A0 - | - x 471597cad322 (1) A0 - rewritten by test (*20*) as 337fec4d2edc, f257fde29c7a (glob) - -Check that debugobshistory on the second successor after split show -the revision plus the splitted one - $ hg olog f257fde29c7a - @ f257fde29c7a (3) A0 - | - x 471597cad322 (1) A0 - rewritten by test (*20*) as 337fec4d2edc, f257fde29c7a (glob) - -Check that debugobshistory on both successors after split show -a coherent graph - $ hg olog 'f257fde29c7a+337fec4d2edc' - o 337fec4d2edc (2) A0 - | - | @ f257fde29c7a (3) A0 - |/ - x 471597cad322 (1) A0 - rewritten by test (*20*) as 337fec4d2edc, f257fde29c7a (glob) - - $ hg update 471597cad322 - abort: hidden revision '471597cad322'! - (use --hidden to access hidden revisions) - [255] - $ hg update --hidden 'min(desc(A0))' - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved - working directory parent is obsolete! (471597cad322) - (use 'hg evolve' to update to its tipmost successor: 337fec4d2edc, f257fde29c7a) - -Test output with lots of splitted commit -======================================== - -Test setup ----------- - - $ hg init $TESTTMP/local-lots-split - $ cd $TESTTMP/local-lots-split - $ mkcommit ROOT - $ echo 42 >> a - $ echo 43 >> b - $ echo 44 >> c - $ echo 45 >> d - $ hg commit -A -m "A0" - adding a - adding b - adding c - adding d - $ hg log --hidden -G - @ changeset: 1:de7290d8b885 - | tag: tip - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: A0 - | - o changeset: 0:ea207398892e - user: test - date: Thu Jan 01 00:00:00 1970 +0000 - summary: ROOT - - - $ hg split -r 'desc(A0)' -d "0 0" << EOF - > y - > y - > n - > n - > n - > n - > y - > y - > n - > n - > n - > y - > y - > n - > n - > y - > y - > EOF - 0 files updated, 0 files merged, 4 files removed, 0 files unresolved - adding a - adding b - adding c - adding d - diff --git a/a b/a - new file mode 100644 - examine changes to 'a'? [Ynesfdaq?] y - - @@ -0,0 +1,1 @@ - +42 - record change 1/4 to 'a'? [Ynesfdaq?] y - - diff --git a/b b/b - new file mode 100644 - examine changes to 'b'? [Ynesfdaq?] n - - diff --git a/c b/c - new file mode 100644 - examine changes to 'c'? [Ynesfdaq?] n - - diff --git a/d b/d - new file mode 100644 - examine changes to 'd'? [Ynesfdaq?] n - - created new head - Done splitting? [yN] n - diff --git a/b b/b - new file mode 100644 - examine changes to 'b'? [Ynesfdaq?] y - - @@ -0,0 +1,1 @@ - +43 - record change 1/3 to 'b'? [Ynesfdaq?] y - - diff --git a/c b/c - new file mode 100644 - examine changes to 'c'? [Ynesfdaq?] n - - diff --git a/d b/d - new file mode 100644 - examine changes to 'd'? [Ynesfdaq?] n - - Done splitting? [yN] n - diff --git a/c b/c - new file mode 100644 - examine changes to 'c'? [Ynesfdaq?] y - - @@ -0,0 +1,1 @@ - +44 - record change 1/2 to 'c'? [Ynesfdaq?] y - - diff --git a/d b/d - new file mode 100644 - examine changes to 'd'? [Ynesfdaq?] n - - Done splitting? [yN] n - diff --git a/d b/d - new file mode 100644 - examine changes to 'd'? [Ynesfdaq?] y - - @@ -0,0 +1,1 @@ - +45 - record this change to 'd'? [Ynesfdaq?] y - - no more change to split - - $ hg log --hidden -G - @ changeset: 5:c7f044602e9b - | tag: tip - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: A0 - | - o changeset: 4:1ae8bc733a14 - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: A0 - | - o changeset: 3:f257fde29c7a - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: A0 - | - o changeset: 2:337fec4d2edc - | parent: 0:ea207398892e - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: A0 - | - | x changeset: 1:de7290d8b885 - |/ user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: A0 - | - o changeset: 0:ea207398892e - user: test - date: Thu Jan 01 00:00:00 1970 +0000 - summary: ROOT - -Actual test ------------ - - $ hg olog de7290d8b885 --hidden - x de7290d8b885 (1) A0 - rewritten by test (*20*) as 1ae8bc733a14, 337fec4d2edc, c7f044602e9b, f257fde29c7a (glob) - - $ hg olog de7290d8b885 --hidden --no-graph -Tjson | python -m json.tool - [ - { - "debugobshistory.markers": [ - { - "debugobshistory.marker_date": [ - *, (glob) - 0 (glob) - ], - "debugobshistory.marker_user": "test", - "debugobshistory.succnodes": [ - "1ae8bc733a14", - "337fec4d2edc", - "c7f044602e9b", - "f257fde29c7a" - ], - "debugobshistory.verb": "rewritten" - } - ], - "debugobshistory.node": "de7290d8b885", - "debugobshistory.rev": 1, - "debugobshistory.shortdescription": "A0" - } - ] - $ hg olog c7f044602e9b - @ c7f044602e9b (5) A0 - | - x de7290d8b885 (1) A0 - rewritten by test (*20*) as 1ae8bc733a14, 337fec4d2edc, c7f044602e9b, f257fde29c7a (glob) - - $ hg olog c7f044602e9b --no-graph -Tjson | python -m json.tool - [ - { - "debugobshistory.markers": [], - "debugobshistory.node": "c7f044602e9b", - "debugobshistory.rev": 5, - "debugobshistory.shortdescription": "A0" - }, - { - "debugobshistory.markers": [ - { - "debugobshistory.marker_date": [ - *, (glob) - 0 (glob) - ], - "debugobshistory.marker_user": "test", - "debugobshistory.succnodes": [ - "1ae8bc733a14", - "337fec4d2edc", - "c7f044602e9b", - "f257fde29c7a" - ], - "debugobshistory.verb": "rewritten" - } - ], - "debugobshistory.node": "de7290d8b885", - "debugobshistory.rev": 1, - "debugobshistory.shortdescription": "A0" - } - ] -Check that debugobshistory on all heads show a coherent graph - $ hg olog 2::5 - o 1ae8bc733a14 (4) A0 - | - | o 337fec4d2edc (2) A0 - |/ - | @ c7f044602e9b (5) A0 - |/ - | o f257fde29c7a (3) A0 - |/ - x de7290d8b885 (1) A0 - rewritten by test (*20*) as 1ae8bc733a14, 337fec4d2edc, c7f044602e9b, f257fde29c7a (glob) - - $ hg update de7290d8b885 - abort: hidden revision 'de7290d8b885'! - (use --hidden to access hidden revisions) - [255] - $ hg update --hidden 'min(desc(A0))' - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved - working directory parent is obsolete! (de7290d8b885) - (use 'hg evolve' to update to its tipmost successor: 337fec4d2edc, f257fde29c7a and 2 more) - -Test output with folded commit -============================== - -Test setup ----------- - - $ hg init $TESTTMP/local-fold - $ cd $TESTTMP/local-fold - $ mkcommit ROOT - $ mkcommit A0 - $ mkcommit B0 - $ hg log --hidden -G - @ changeset: 2:0dec01379d3b - | tag: tip - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: B0 - | - o changeset: 1:471f378eab4c - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: A0 - | - o changeset: 0:ea207398892e - user: test - date: Thu Jan 01 00:00:00 1970 +0000 - summary: ROOT - - $ hg fold --exact -r 'desc(A0) + desc(B0)' --date "0 0" -m "C0" - 2 changesets folded - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg log --hidden -G - @ changeset: 3:eb5a0daa2192 - | tag: tip - | parent: 0:ea207398892e - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: C0 - | - | x changeset: 2:0dec01379d3b - | | user: test - | | date: Thu Jan 01 00:00:00 1970 +0000 - | | summary: B0 - | | - | x changeset: 1:471f378eab4c - |/ user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: A0 - | - o changeset: 0:ea207398892e - user: test - date: Thu Jan 01 00:00:00 1970 +0000 - summary: ROOT - - Actual test - ----------- - -Check that debugobshistory on the first folded revision show only -the revision with the target - $ hg olog --hidden 471f378eab4c - x 471f378eab4c (1) A0 - rewritten by test (*20*) as eb5a0daa2192 (glob) - -Check that debugobshistory on the second folded revision show only -the revision with the target - $ hg olog --hidden 0dec01379d3b - x 0dec01379d3b (2) B0 - rewritten by test (*20*) as eb5a0daa2192 (glob) - -Check that debugobshistory on the successor revision show a coherent -graph - $ hg olog eb5a0daa2192 - @ eb5a0daa2192 (3) C0 - |\ - x | 0dec01379d3b (2) B0 - / rewritten by test (*20*) as eb5a0daa2192 (glob) - | - x 471f378eab4c (1) A0 - rewritten by test (*20*) as eb5a0daa2192 (glob) - - $ hg olog eb5a0daa2192 --no-graph -Tjson | python -m json.tool - [ - { - "debugobshistory.markers": [], - "debugobshistory.node": "eb5a0daa2192", - "debugobshistory.rev": 3, - "debugobshistory.shortdescription": "C0" - }, - { - "debugobshistory.markers": [ - { - "debugobshistory.marker_date": [ - *, (glob) - 0 (glob) - ], - "debugobshistory.marker_user": "test", - "debugobshistory.succnodes": [ - "eb5a0daa2192" - ], - "debugobshistory.verb": "rewritten" - } - ], - "debugobshistory.node": "471f378eab4c", - "debugobshistory.rev": 1, - "debugobshistory.shortdescription": "A0" - }, - { - "debugobshistory.markers": [ - { - "debugobshistory.marker_date": [ - *, (glob) - 0 (glob) - ], - "debugobshistory.marker_user": "test", - "debugobshistory.succnodes": [ - "eb5a0daa2192" - ], - "debugobshistory.verb": "rewritten" - } - ], - "debugobshistory.node": "0dec01379d3b", - "debugobshistory.rev": 2, - "debugobshistory.shortdescription": "B0" - } - ] - $ hg update 471f378eab4c - abort: hidden revision '471f378eab4c'! - (use --hidden to access hidden revisions) - [255] - $ hg update --hidden 'desc(A0)' - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - working directory parent is obsolete! (471f378eab4c) - (use 'hg evolve' to update to its successor: eb5a0daa2192) - $ hg update 0dec01379d3b - working directory parent is obsolete! (471f378eab4c) - (use 'hg evolve' to update to its successor: eb5a0daa2192) - abort: hidden revision '0dec01379d3b'! - (use --hidden to access hidden revisions) - [255] - $ hg update --hidden 'desc(B0)' - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - working directory parent is obsolete! (0dec01379d3b) - (use 'hg evolve' to update to its successor: eb5a0daa2192) - -Test output with divergence -=========================== - -Test setup ----------- - - $ hg init $TESTTMP/local-divergence - $ cd $TESTTMP/local-divergence - $ mkcommit ROOT - $ mkcommit A0 - $ hg amend -m "A1" - $ hg log --hidden -G - @ changeset: 2:fdf9bde5129a - | tag: tip - | parent: 0:ea207398892e - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: A1 - | - | x changeset: 1:471f378eab4c - |/ user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: A0 - | - o changeset: 0:ea207398892e - user: test - date: Thu Jan 01 00:00:00 1970 +0000 - summary: ROOT - - $ hg update --hidden 'desc(A0)' - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved - working directory parent is obsolete! (471f378eab4c) - (use 'hg evolve' to update to its successor: fdf9bde5129a) - $ hg amend -m "A2" - 2 new divergent changesets - $ hg log --hidden -G - @ changeset: 3:65b757b745b9 - | tag: tip - | parent: 0:ea207398892e - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: A2 - | - | o changeset: 2:fdf9bde5129a - |/ parent: 0:ea207398892e - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: A1 - | - | x changeset: 1:471f378eab4c - |/ user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: A0 - | - o changeset: 0:ea207398892e - user: test - date: Thu Jan 01 00:00:00 1970 +0000 - summary: ROOT - -Actual test ------------ - -Check that debugobshistory on the divergent revision show both destinations - $ hg olog --hidden 471f378eab4c - x 471f378eab4c (1) A0 - rewritten by test (*20*) as 65b757b745b9 (glob) - rewritten by test (*20*) as fdf9bde5129a (glob) - - $ hg olog --hidden 471f378eab4c --no-graph -Tjson | python -m json.tool - [ - { - "debugobshistory.markers": [ - { - "debugobshistory.marker_date": [ - *, (glob) - 0 (glob) - ], - "debugobshistory.marker_user": "test", - "debugobshistory.succnodes": [ - "65b757b745b9" - ], - "debugobshistory.verb": "rewritten" - }, - { - "debugobshistory.marker_date": [ - *, (glob) - 0 (glob) - ], - "debugobshistory.marker_user": "test", - "debugobshistory.succnodes": [ - "fdf9bde5129a" - ], - "debugobshistory.verb": "rewritten" - } - ], - "debugobshistory.node": "471f378eab4c", - "debugobshistory.rev": 1, - "debugobshistory.shortdescription": "A0" - } - ] -Check that debugobshistory on the first diverged revision show the revision -and the diverent one - $ hg olog fdf9bde5129a - o fdf9bde5129a (2) A1 - | - x 471f378eab4c (1) A0 - rewritten by test (*20*) as 65b757b745b9 (glob) - rewritten by test (*20*) as fdf9bde5129a (glob) - -Check that debugobshistory on the second diverged revision show the revision -and the diverent one - $ hg olog 65b757b745b9 - @ 65b757b745b9 (3) A2 - | - x 471f378eab4c (1) A0 - rewritten by test (*20*) as 65b757b745b9 (glob) - rewritten by test (*20*) as fdf9bde5129a (glob) - -Check that debugobshistory on the both diverged revision show a coherent -graph - $ hg olog '65b757b745b9+fdf9bde5129a' - @ 65b757b745b9 (3) A2 - | - | o fdf9bde5129a (2) A1 - |/ - x 471f378eab4c (1) A0 - rewritten by test (*20*) as 65b757b745b9 (glob) - rewritten by test (*20*) as fdf9bde5129a (glob) - - $ hg olog '65b757b745b9+fdf9bde5129a' --no-graph -Tjson | python -m json.tool - [ - { - "debugobshistory.markers": [], - "debugobshistory.node": "65b757b745b9", - "debugobshistory.rev": 3, - "debugobshistory.shortdescription": "A2" - }, - { - "debugobshistory.markers": [ - { - "debugobshistory.marker_date": [ - *, (glob) - 0 (glob) - ], - "debugobshistory.marker_user": "test", - "debugobshistory.succnodes": [ - "65b757b745b9" - ], - "debugobshistory.verb": "rewritten" - }, - { - "debugobshistory.marker_date": [ - *, (glob) - 0 (glob) - ], - "debugobshistory.marker_user": "test", - "debugobshistory.succnodes": [ - "fdf9bde5129a" - ], - "debugobshistory.verb": "rewritten" - } - ], - "debugobshistory.node": "471f378eab4c", - "debugobshistory.rev": 1, - "debugobshistory.shortdescription": "A0" - }, - { - "debugobshistory.markers": [], - "debugobshistory.node": "fdf9bde5129a", - "debugobshistory.rev": 2, - "debugobshistory.shortdescription": "A1" - } - ] - $ hg update 471f378eab4c - abort: hidden revision '471f378eab4c'! - (use --hidden to access hidden revisions) - [255] - $ hg update --hidden 'desc(A0)' - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved - working directory parent is obsolete! (471f378eab4c) - (471f378eab4c has diverged, use 'hg evolve -list --divergent' to resolve the issue) - -Test output with amended + folded commit -======================================== - -Test setup ----------- - - $ hg init $TESTTMP/local-amend-fold - $ cd $TESTTMP/local-amend-fold - $ mkcommit ROOT - $ mkcommit A0 - $ mkcommit B0 - $ hg amend -m "B1" - $ hg log --hidden -G - @ changeset: 3:b7ea6d14e664 - | tag: tip - | parent: 1:471f378eab4c - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: B1 - | - | x changeset: 2:0dec01379d3b - |/ user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: B0 - | - o changeset: 1:471f378eab4c - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: A0 - | - o changeset: 0:ea207398892e - user: test - date: Thu Jan 01 00:00:00 1970 +0000 - summary: ROOT - - $ hg fold --exact -r 'desc(A0) + desc(B1)' --date "0 0" -m "C0" - 2 changesets folded - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg log --hidden -G - @ changeset: 4:eb5a0daa2192 - | tag: tip - | parent: 0:ea207398892e - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: C0 - | - | x changeset: 3:b7ea6d14e664 - | | parent: 1:471f378eab4c - | | user: test - | | date: Thu Jan 01 00:00:00 1970 +0000 - | | summary: B1 - | | - | | x changeset: 2:0dec01379d3b - | |/ user: test - | | date: Thu Jan 01 00:00:00 1970 +0000 - | | summary: B0 - | | - | x changeset: 1:471f378eab4c - |/ user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: A0 - | - o changeset: 0:ea207398892e - user: test - date: Thu Jan 01 00:00:00 1970 +0000 - summary: ROOT - - Actual test - ----------- - -Check that debugobshistory on head show a coherent graph - $ hg olog eb5a0daa2192 - @ eb5a0daa2192 (4) C0 - |\ - x | 471f378eab4c (1) A0 - / rewritten by test (*20*) as eb5a0daa2192 (glob) - | - x b7ea6d14e664 (3) B1 - | rewritten by test (*20*) as eb5a0daa2192 (glob) - | - x 0dec01379d3b (2) B0 - rewritten by test (*20*) as b7ea6d14e664 (glob) - - $ hg olog eb5a0daa2192 --no-graph -Tjson | python -m json.tool - [ - { - "debugobshistory.markers": [], - "debugobshistory.node": "eb5a0daa2192", - "debugobshistory.rev": 4, - "debugobshistory.shortdescription": "C0" - }, - { - "debugobshistory.markers": [ - { - "debugobshistory.marker_date": [ - *, (glob) - 0 (glob) - ], - "debugobshistory.marker_user": "test", - "debugobshistory.succnodes": [ - "eb5a0daa2192" - ], - "debugobshistory.verb": "rewritten" - } - ], - "debugobshistory.node": "b7ea6d14e664", - "debugobshistory.rev": 3, - "debugobshistory.shortdescription": "B1" - }, - { - "debugobshistory.markers": [ - { - "debugobshistory.marker_date": [ - *, (glob) - 0 (glob) - ], - "debugobshistory.marker_user": "test", - "debugobshistory.succnodes": [ - "b7ea6d14e664" - ], - "debugobshistory.verb": "rewritten" - } - ], - "debugobshistory.node": "0dec01379d3b", - "debugobshistory.rev": 2, - "debugobshistory.shortdescription": "B0" - }, - { - "debugobshistory.markers": [ - { - "debugobshistory.marker_date": [ - *, (glob) - 0 (glob) - ], - "debugobshistory.marker_user": "test", - "debugobshistory.succnodes": [ - "eb5a0daa2192" - ], - "debugobshistory.verb": "rewritten" - } - ], - "debugobshistory.node": "471f378eab4c", - "debugobshistory.rev": 1, - "debugobshistory.shortdescription": "A0" - } - ] - $ hg update 471f378eab4c - abort: hidden revision '471f378eab4c'! - (use --hidden to access hidden revisions) - [255] - $ hg update --hidden 'desc(A0)' - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - working directory parent is obsolete! (471f378eab4c) - (use 'hg evolve' to update to its successor: eb5a0daa2192) - $ hg update --hidden 0dec01379d3b - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - working directory parent is obsolete! (0dec01379d3b) - (use 'hg evolve' to update to its successor: eb5a0daa2192) - $ hg update 0dec01379d3b - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved - working directory parent is obsolete! (0dec01379d3b) - (use 'hg evolve' to update to its successor: eb5a0daa2192) - $ hg update --hidden 'desc(B0)' - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved - working directory parent is obsolete! (0dec01379d3b) - (use 'hg evolve' to update to its successor: eb5a0daa2192) - -Test output with pushed and pulled obs markers -============================================== - -Test setup ----------- - - $ hg init $TESTTMP/local-remote-markers-1 - $ cd $TESTTMP/local-remote-markers-1 - $ mkcommit ROOT - $ mkcommit A0 - $ hg log --hidden -G - @ changeset: 1:471f378eab4c - | tag: tip - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: A0 - | - o changeset: 0:ea207398892e - user: test - date: Thu Jan 01 00:00:00 1970 +0000 - summary: ROOT - - $ hg clone $TESTTMP/local-remote-markers-1 $TESTTMP/local-remote-markers-2 - updating to branch default - 2 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ cd $TESTTMP/local-remote-markers-2 - $ hg log --hidden -G - @ changeset: 1:471f378eab4c - | tag: tip - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: A0 - | - o changeset: 0:ea207398892e - user: test - date: Thu Jan 01 00:00:00 1970 +0000 - summary: ROOT - - $ cd $TESTTMP/local-remote-markers-1 - $ hg amend -m "A1" - $ hg amend -m "A2" - $ hg log --hidden -G - @ changeset: 3:7a230b46bf61 - | tag: tip - | parent: 0:ea207398892e - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: A2 - | - | x changeset: 2:fdf9bde5129a - |/ parent: 0:ea207398892e - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: A1 - | - | x changeset: 1:471f378eab4c - |/ user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: A0 - | - o changeset: 0:ea207398892e - user: test - date: Thu Jan 01 00:00:00 1970 +0000 - summary: ROOT - - Actual test - ----------- - - $ hg olog 7a230b46bf61 - @ 7a230b46bf61 (3) A2 - | - x fdf9bde5129a (2) A1 - | rewritten by test (*20*) as 7a230b46bf61 (glob) - | - x 471f378eab4c (1) A0 - rewritten by test (*20*) as fdf9bde5129a (glob) - - $ cd $TESTTMP/local-remote-markers-2 - $ hg pull - pulling from $TESTTMP/local-remote-markers-1 - searching for changes - adding changesets - adding manifests - adding file changes - added 1 changesets with 0 changes to 1 files (+1 heads) - 2 new obsolescence markers - (run 'hg heads' to see heads, 'hg merge' to merge) - working directory parent is obsolete! (471f378eab4c) - (use 'hg evolve' to update to its successor: 7a230b46bf61) -Check that debugobshistory works with markers pointing to missing local -changectx - $ hg olog 7a230b46bf61 - o 7a230b46bf61 (2) A2 - | - x fdf9bde5129a - | rewritten by test (*20*) as 7a230b46bf61 (glob) - | - @ 471f378eab4c (1) A0 - rewritten by test (*20*) as fdf9bde5129a (glob) - - $ hg olog 7a230b46bf61 --color=debug - o [evolve.node|7a230b46bf61] [evolve.rev|(2)] [evolve.short_description|A2] - | - x [evolve.node evolve.missing_change_ctx|fdf9bde5129a] - | [evolve.verb|rewritten] by [evolve.user|test] [evolve.date|(*20*)] as [evolve.node|7a230b46bf61] (glob) - | - @ [evolve.node|471f378eab4c] [evolve.rev|(1)] [evolve.short_description|A0] - [evolve.verb|rewritten] by [evolve.user|test] [evolve.date|(*20*)] as [evolve.node|fdf9bde5129a] (glob) - - -Test with cycle -=============== - -Test setup ----------- - - $ hg init $TESTTMP/cycle - $ cd $TESTTMP/cycle - $ mkcommit ROOT - $ mkcommit A - $ mkcommit B - $ mkcommit C - $ hg log -G - @ changeset: 3:a8df460dbbfe - | tag: tip - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: C - | - o changeset: 2:c473644ee0e9 - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: B - | - o changeset: 1:2a34000d3544 - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: A - | - o changeset: 0:ea207398892e - user: test - date: Thu Jan 01 00:00:00 1970 +0000 - summary: ROOT - -Create a cycle - $ hg prune -s "desc(B)" "desc(A)" - 1 changesets pruned - 2 new unstable changesets - $ hg prune -s "desc(C)" "desc(B)" - 1 changesets pruned - $ hg prune -s "desc(A)" "desc(C)" - 0 files updated, 0 files merged, 2 files removed, 0 files unresolved - working directory now at 2a34000d3544 - 1 changesets pruned - $ hg log --hidden -G - x changeset: 3:a8df460dbbfe - | tag: tip - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: C - | - x changeset: 2:c473644ee0e9 - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: B - | - @ changeset: 1:2a34000d3544 - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: A - | - o changeset: 0:ea207398892e - user: test - date: Thu Jan 01 00:00:00 1970 +0000 - summary: ROOT - -Actual test ------------ - -Check that debugobshistory never crash on a cycle - - $ hg olog "desc(A)" --hidden - @ 2a34000d3544 (1) A - | rewritten by test (*20*) as c473644ee0e9 (glob) - | - x a8df460dbbfe (3) C - | rewritten by test (*20*) as 2a34000d3544 (glob) - | - x c473644ee0e9 (2) B - | rewritten by test (*20*) as a8df460dbbfe (glob) - | - - $ hg olog "desc(B)" --hidden - @ 2a34000d3544 (1) A - | rewritten by test (*20*) as c473644ee0e9 (glob) - | - x a8df460dbbfe (3) C - | rewritten by test (*20*) as 2a34000d3544 (glob) - | - x c473644ee0e9 (2) B - | rewritten by test (*20*) as a8df460dbbfe (glob) - | - - $ hg olog "desc(C)" --hidden - @ 2a34000d3544 (1) A - | rewritten by test (*20*) as c473644ee0e9 (glob) - | - x a8df460dbbfe (3) C - | rewritten by test (*20*) as 2a34000d3544 (glob) - | - x c473644ee0e9 (2) B - | rewritten by test (*20*) as a8df460dbbfe (glob) - | - -Test with multiple cyles -======================== - -Test setup ----------- - - $ hg init $TESTTMP/multiple-cycle - $ cd $TESTTMP/multiple-cycle - $ mkcommit ROOT - $ mkcommit A - $ mkcommit B - $ mkcommit C - $ mkcommit D - $ mkcommit E - $ mkcommit F - $ hg log -G - @ changeset: 6:d9f908fde1a1 - | tag: tip - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: F - | - o changeset: 5:0da815c333f6 - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: E - | - o changeset: 4:868d2e0eb19c - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: D - | - o changeset: 3:a8df460dbbfe - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: C - | - o changeset: 2:c473644ee0e9 - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: B - | - o changeset: 1:2a34000d3544 - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: A - | - o changeset: 0:ea207398892e - user: test - date: Thu Jan 01 00:00:00 1970 +0000 - summary: ROOT - -Create a first cycle - $ hg prune -s "desc(B)" "desc(A)" - 1 changesets pruned - 5 new unstable changesets - $ hg prune -s "desc(C)" "desc(B)" - 1 changesets pruned - $ hg prune --split -s "desc(A)" -s "desc(D)" "desc(C)" - 1 changesets pruned -And create a second one - $ hg prune -s "desc(E)" "desc(D)" - 1 changesets pruned - $ hg prune -s "desc(F)" "desc(E)" - 1 changesets pruned - $ hg prune -s "desc(D)" "desc(F)" - 0 files updated, 0 files merged, 2 files removed, 0 files unresolved - working directory now at 868d2e0eb19c - 1 changesets pruned - $ hg log --hidden -G - x changeset: 6:d9f908fde1a1 - | tag: tip - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: F - | - x changeset: 5:0da815c333f6 - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: E - | - @ changeset: 4:868d2e0eb19c - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: D - | - x changeset: 3:a8df460dbbfe - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: C - | - x changeset: 2:c473644ee0e9 - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: B - | - x changeset: 1:2a34000d3544 - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: A - | - o changeset: 0:ea207398892e - user: test - date: Thu Jan 01 00:00:00 1970 +0000 - summary: ROOT - -Actual test ------------ - -Check that debugobshistory never crash on a cycle - - $ hg olog "desc(D)" --hidden - x 0da815c333f6 (5) E - | rewritten by test (*20*) as d9f908fde1a1 (glob) - | - @ 868d2e0eb19c (4) D - |\ rewritten by test (*20*) as 0da815c333f6 (glob) - | | - | x d9f908fde1a1 (6) F - | | rewritten by test (*20*) as 868d2e0eb19c (glob) - | | - +---x 2a34000d3544 (1) A - | | rewritten by test (*20*) as c473644ee0e9 (glob) - | | - x | a8df460dbbfe (3) C - | | rewritten by test (*20*) as 2a34000d3544, 868d2e0eb19c (glob) - | | - x | c473644ee0e9 (2) B - | | rewritten by test (*20*) as a8df460dbbfe (glob) - | | - -Check the json output is valid in this case - - $ hg olog "desc(D)" --hidden --no-graph -Tjson | python -m json.tool - [ - { - "debugobshistory.markers": [ - { - "debugobshistory.marker_date": [ - *, (glob) - 0 - ], - "debugobshistory.marker_user": "test", - "debugobshistory.succnodes": [ - "0da815c333f6" - ], - "debugobshistory.verb": "rewritten" - } - ], - "debugobshistory.node": "868d2e0eb19c", - "debugobshistory.rev": 4, - "debugobshistory.shortdescription": "D" - }, - { - "debugobshistory.markers": [ - { - "debugobshistory.marker_date": [ - *, (glob) - 0 - ], - "debugobshistory.marker_user": "test", - "debugobshistory.succnodes": [ - "868d2e0eb19c" - ], - "debugobshistory.verb": "rewritten" - } - ], - "debugobshistory.node": "d9f908fde1a1", - "debugobshistory.rev": 6, - "debugobshistory.shortdescription": "F" - }, - { - "debugobshistory.markers": [ - { - "debugobshistory.marker_date": [ - *, (glob) - 0 - ], - "debugobshistory.marker_user": "test", - "debugobshistory.succnodes": [ - "d9f908fde1a1" - ], - "debugobshistory.verb": "rewritten" - } - ], - "debugobshistory.node": "0da815c333f6", - "debugobshistory.rev": 5, - "debugobshistory.shortdescription": "E" - }, - { - "debugobshistory.markers": [ - { - "debugobshistory.marker_date": [ - *, (glob) - 0 - ], - "debugobshistory.marker_user": "test", - "debugobshistory.succnodes": [ - "2a34000d3544", - "868d2e0eb19c" - ], - "debugobshistory.verb": "rewritten" - } - ], - "debugobshistory.node": "a8df460dbbfe", - "debugobshistory.rev": 3, - "debugobshistory.shortdescription": "C" - }, - { - "debugobshistory.markers": [ - { - "debugobshistory.marker_date": [ - *, (glob) - 0 - ], - "debugobshistory.marker_user": "test", - "debugobshistory.succnodes": [ - "a8df460dbbfe" - ], - "debugobshistory.verb": "rewritten" - } - ], - "debugobshistory.node": "c473644ee0e9", - "debugobshistory.rev": 2, - "debugobshistory.shortdescription": "B" - }, - { - "debugobshistory.markers": [ - { - "debugobshistory.marker_date": [ - *, (glob) - 0 - ], - "debugobshistory.marker_user": "test", - "debugobshistory.succnodes": [ - "c473644ee0e9" - ], - "debugobshistory.verb": "rewritten" - } - ], - "debugobshistory.node": "2a34000d3544", - "debugobshistory.rev": 1, - "debugobshistory.shortdescription": "A" - } - ] diff -r 765b2561fa90 -r fd24f1c7accd tests/test-evolve-serveronly.t --- a/tests/test-evolve-serveronly.t Thu May 18 23:35:16 2017 +0200 +++ b/tests/test-evolve-serveronly.t Thu May 18 23:51:10 2017 +0200 @@ -10,7 +10,7 @@ > [phases] > publish = False > [experimental] - > bundle2-exp=False # < Mercurial-4.0 + > bundle2-exp=False > [devel] > legacy.exchange=bundle1 > [extensions] diff -r 765b2561fa90 -r fd24f1c7accd tests/test-evolve-topic.t --- a/tests/test-evolve-topic.t Thu May 18 23:35:16 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,217 +0,0 @@ - -Check we can find the topic extensions - - $ cat >> $HGRCPATH < [defaults] - > amend=-d "0 0" - > fold=-d "0 0" - > [phases] - > publish = False - > [ui] - > logtemplate = {rev} - \{{get(namespaces, "topics")}} {node|short} {desc} ({phase})\n - > [diff] - > git = 1 - > unified = 0 - > [extensions] - > rebase = - > EOF - $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH - $ echo "topic=$(echo $(dirname $TESTDIR))/hgext3rd/topic/" >> $HGRCPATH - - $ mkcommit() { - > echo "$1" > "$1" - > hg add "$1" - > hg ci -m "add $1" - > } - -Create a simple setup - - $ hg init repoa - $ cd repoa - $ mkcommit aaa - $ mkcommit bbb - $ hg topic foo - $ mkcommit ccc - $ mkcommit ddd - $ mkcommit eee - $ mkcommit fff - $ hg topic bar - $ mkcommit ggg - $ mkcommit hhh - $ mkcommit iii - $ mkcommit jjj - - $ hg log -G - @ 9 - {bar} 1d964213b023 add jjj (draft) - | - o 8 - {bar} fcab990f3261 add iii (draft) - | - o 7 - {bar} b0c2554835ac add hhh (draft) - | - o 6 - {bar} c748293f1c1a add ggg (draft) - | - o 5 - {foo} 6a6b7365c751 add fff (draft) - | - o 4 - {foo} 3969ab847d9c add eee (draft) - | - o 3 - {foo} 4e3a154f38c7 add ddd (draft) - | - o 2 - {foo} cced9bac76e3 add ccc (draft) - | - o 1 - {} a4dbed0837ea add bbb (draft) - | - o 0 - {} 199cc73e9a0b add aaa (draft) - - -Test that evolve --all evolve the current topic ------------------------------------------------ - -make a mess - - $ hg up foo - switching to topic foo - 0 files updated, 0 files merged, 4 files removed, 0 files unresolved - $ hg topic -l - ### topic: foo (?) - ### branch: default (?) - t4@ add fff (current) - t3: add eee - t2: add ddd - t1: add ccc - ^ add bbb - $ hg up 'desc(ddd)' - 0 files updated, 0 files merged, 2 files removed, 0 files unresolved - $ echo ddd >> ddd - $ hg amend - 6 new unstable changesets - $ hg up 'desc(fff)' - 3 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ echo fff >> fff - $ hg amend - - $ hg log -G - @ 13 - {foo} e104f49bab28 add fff (draft) - | - | o 11 - {foo} d9cacd156ffc add ddd (draft) - | | - | | o 9 - {bar} 1d964213b023 add jjj (draft) - | | | - | | o 8 - {bar} fcab990f3261 add iii (draft) - | | | - | | o 7 - {bar} b0c2554835ac add hhh (draft) - | | | - | | o 6 - {bar} c748293f1c1a add ggg (draft) - | | | - +---x 5 - {foo} 6a6b7365c751 add fff (draft) - | | - o | 4 - {foo} 3969ab847d9c add eee (draft) - | | - x | 3 - {foo} 4e3a154f38c7 add ddd (draft) - |/ - o 2 - {foo} cced9bac76e3 add ccc (draft) - | - o 1 - {} a4dbed0837ea add bbb (draft) - | - o 0 - {} 199cc73e9a0b add aaa (draft) - - -Run evolve --all - - $ hg evolve --all - move:[4] add eee - atop:[11] add ddd - move:[13] add fff - atop:[14] add eee - working directory is now at 070c5573d8f9 - $ hg log -G - @ 15 - {foo} 070c5573d8f9 add fff (draft) - | - o 14 - {foo} 42b49017ff90 add eee (draft) - | - o 11 - {foo} d9cacd156ffc add ddd (draft) - | - | o 9 - {bar} 1d964213b023 add jjj (draft) - | | - | o 8 - {bar} fcab990f3261 add iii (draft) - | | - | o 7 - {bar} b0c2554835ac add hhh (draft) - | | - | o 6 - {bar} c748293f1c1a add ggg (draft) - | | - | x 5 - {foo} 6a6b7365c751 add fff (draft) - | | - | x 4 - {foo} 3969ab847d9c add eee (draft) - | | - | x 3 - {foo} 4e3a154f38c7 add ddd (draft) - |/ - o 2 - {foo} cced9bac76e3 add ccc (draft) - | - o 1 - {} a4dbed0837ea add bbb (draft) - | - o 0 - {} 199cc73e9a0b add aaa (draft) - - -Test that evolve does not loose topic information -------------------------------------------------- - - $ hg evolve --rev 'topic(bar)' - move:[6] add ggg - atop:[15] add fff - move:[7] add hhh - atop:[16] add ggg - move:[8] add iii - atop:[17] add hhh - move:[9] add jjj - atop:[18] add iii - working directory is now at 9bf430c106b7 - $ hg log -G - @ 19 - {bar} 9bf430c106b7 add jjj (draft) - | - o 18 - {bar} d2dc89c57700 add iii (draft) - | - o 17 - {bar} 20bc4d02aa62 add hhh (draft) - | - o 16 - {bar} 16d6f664b17c add ggg (draft) - | - o 15 - {foo} 070c5573d8f9 add fff (draft) - | - o 14 - {foo} 42b49017ff90 add eee (draft) - | - o 11 - {foo} d9cacd156ffc add ddd (draft) - | - o 2 - {foo} cced9bac76e3 add ccc (draft) - | - o 1 - {} a4dbed0837ea add bbb (draft) - | - o 0 - {} 199cc73e9a0b add aaa (draft) - - -Tests next and prev behavior -============================ - -Basic move are restricted to the current topic - - $ hg up foo - switching to topic foo - 0 files updated, 0 files merged, 4 files removed, 0 files unresolved - $ hg prev - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - [14] add eee - $ hg next - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - [15] add fff - $ hg next - no children on topic "foo" - do you want --no-topic - [1] - $ hg next --no-topic - switching to topic bar - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - [16] add ggg - $ hg prev - no parent in topic "bar" - (do you want --no-topic) - $ hg prev --no-topic - switching to topic foo - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - [15] add fff diff -r 765b2561fa90 -r fd24f1c7accd tests/test-evolve.t --- a/tests/test-evolve.t Thu May 18 23:35:16 2017 +0200 +++ b/tests/test-evolve.t Thu May 18 23:51:10 2017 +0200 @@ -767,20 +767,6 @@ $ hg debugrebuildstate $ hg st -Test olog - - $ hg olog | head -n 10 # hg touch makes the output unstable (fix it with devel option for more stable touch) - @ d26d339c513f (12) add 4 - |\ - x | af636757ce3b (11) add 3 - |\ \ rewritten by test (*) as d26d339c513f (glob) - | | | - | \ \ - | |\ \ - | | | x ce341209337f (4) add 4 - | | | rewritten by test (*) as d26d339c513f (glob) - | | | - Test obsstore stat $ hg debugobsstorestat @@ -1155,7 +1141,7 @@ summary summarize working directory state update update working directory (or switch revisions) - (use 'hg help' for the full list of commands or 'hg -v' for details) + (use "hg help" for the full list of commands or "hg -v" for details) [255] $ hg fold hg: unknown command 'fold' @@ -1181,7 +1167,7 @@ summary summarize working directory state update update working directory (or switch revisions) - (use 'hg help' for the full list of commands or 'hg -v' for details) + (use "hg help" for the full list of commands or "hg -v" for details) [255] Enabling commands selectively, only fold enabled, next is still unknown $ cat >> $HGRCPATH <> .hg/hgrc - > [extensions] - > rebase= - > histedit= - > [phases] - > publish=false - > EOF - $ cat <> $HGRCPATH - > [ui] - > logtemplate = '{rev} ({topics}) {desc}\n' - > EOF - - $ for x in alpha beta gamma delta ; do - > echo file $x >> $x - > hg add $x - > hg ci -m "c_$x" - > done - -Test NGTip feature -================== - -Simple linear case - - $ echo babar >> jungle - $ hg add jungle - $ hg ci -t elephant -m babar - - $ hg log -G - @ 4 (elephant) babar - | - o 3 () c_delta - | - o 2 () c_gamma - | - o 1 () c_beta - | - o 0 () c_alpha - - $ hg log -r 'ngtip(.)' - 3 () c_delta - $ hg log -r 'default' - 3 () c_delta - - -multiple heads with topic - - $ hg up "desc('c_beta')" - 0 files updated, 0 files merged, 3 files removed, 0 files unresolved - $ echo zephir >> jungle - $ hg add jungle - $ hg ci -t monkey -m zephir - $ hg log -G - @ 5 (monkey) zephir - | - | o 4 (elephant) babar - | | - | o 3 () c_delta - | | - | o 2 () c_gamma - |/ - o 1 () c_beta - | - o 0 () c_alpha - - $ hg log -r 'ngtip(.)' - 3 () c_delta - $ hg log -r 'default' - 3 () c_delta - -one of the head is a valid tip - - $ hg up "desc('c_delta')" - 2 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ echo epsilon >> epsilon - $ hg add epsilon - $ hg ci -m "c_epsilon" - $ hg log -G - @ 6 () c_epsilon - | - | o 5 (monkey) zephir - | | - +---o 4 (elephant) babar - | | - o | 3 () c_delta - | | - o | 2 () c_gamma - |/ - o 1 () c_beta - | - o 0 () c_alpha - - $ hg log -r 'ngtip(.)' - 6 () c_epsilon - $ hg log -r 'default' - 6 () c_epsilon - -rebase destination -================== - -rebase on branch ngtip - - $ hg up elephant - switching to topic elephant - 1 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ hg rebase - rebasing 4:cb7ae72f4a80 "babar" - $ hg log -G - @ 7 (elephant) babar - | - o 6 () c_epsilon - | - | o 5 (monkey) zephir - | | - o | 3 () c_delta - | | - o | 2 () c_gamma - |/ - o 1 () c_beta - | - o 0 () c_alpha - - $ hg up monkey - switching to topic monkey - 1 files updated, 0 files merged, 3 files removed, 0 files unresolved - $ hg rebase - rebasing 5:d832ddc604ec "zephir" - $ hg log -G - @ 8 (monkey) zephir - | - | o 7 (elephant) babar - |/ - o 6 () c_epsilon - | - o 3 () c_delta - | - o 2 () c_gamma - | - o 1 () c_beta - | - o 0 () c_alpha - - -Rebase on other topic heads if any - - $ hg up 'desc(c_delta)' - 0 files updated, 0 files merged, 2 files removed, 0 files unresolved - $ echo "General Huc" >> monkeyville - $ hg add monkeyville - $ hg ci -t monkey -m Huc - $ hg log -G - @ 9 (monkey) Huc - | - | o 8 (monkey) zephir - | | - | | o 7 (elephant) babar - | |/ - | o 6 () c_epsilon - |/ - o 3 () c_delta - | - o 2 () c_gamma - | - o 1 () c_beta - | - o 0 () c_alpha - - $ hg rebase - rebasing 9:d79a104e2902 "Huc" (tip) - $ hg log -G - @ 10 (monkey) Huc - | - o 8 (monkey) zephir - | - | o 7 (elephant) babar - |/ - o 6 () c_epsilon - | - o 3 () c_delta - | - o 2 () c_gamma - | - o 1 () c_beta - | - o 0 () c_alpha - - -merge destination -================= - - $ hg up 'ngtip(default)' - 0 files updated, 0 files merged, 2 files removed, 0 files unresolved - $ hg up default - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ echo zeta >> zeta - $ hg add zeta - $ hg ci -m "c_zeta" - $ hg log -G - @ 11 () c_zeta - | - | o 10 (monkey) Huc - | | - | o 8 (monkey) zephir - |/ - | o 7 (elephant) babar - |/ - o 6 () c_epsilon - | - o 3 () c_delta - | - o 2 () c_gamma - | - o 1 () c_beta - | - o 0 () c_alpha - - $ hg up elephant - switching to topic elephant - 1 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ hg rebase -d 'desc(c_zeta)' # make sure tip is elsewhere - rebasing 7:8d0b77140b05 "babar" - $ hg up monkey - switching to topic monkey - 2 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ hg merge - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - (branch merge, don't forget to commit) - $ hg topic - elephant - * monkey - $ hg ci -m 'merge with default' - $ hg topic - elephant - * monkey - $ hg log -G - @ 13 (monkey) merge with default - |\ - | | o 12 (elephant) babar - | |/ - | o 11 () c_zeta - | | - o | 10 (monkey) Huc - | | - o | 8 (monkey) zephir - |/ - o 6 () c_epsilon - | - o 3 () c_delta - | - o 2 () c_gamma - | - o 1 () c_beta - | - o 0 () c_alpha - - - -Check pull --rebase -------------------- - -(we broke it a some point) - - $ cd .. - $ hg clone jungle other --rev '2' - adding changesets - adding manifests - adding file changes - added 3 changesets with 3 changes to 3 files - updating to branch default - 3 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ cd other - $ echo other > other - $ hg add other - $ hg ci -m 'c_other' - $ hg pull -r default --rebase - pulling from $TESTTMP/jungle (glob) - searching for changes - adding changesets - adding manifests - adding file changes - added 3 changesets with 3 changes to 3 files (+1 heads) - rebasing 3:dbc48dd9e743 "c_other" - $ hg log -G - @ 7 () c_other - | - o 6 () c_zeta - | - o 5 () c_epsilon - | - o 4 () c_delta - | - o 2 () c_gamma - | - o 1 () c_beta - | - o 0 () c_alpha - - $ cd ../jungle - - -Default destination for update -=============================== - -initial setup - - $ hg up elephant - switching to topic elephant - 1 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ echo arthur >> jungle - $ hg ci -m arthur - $ echo pompadour >> jungle - $ hg ci -m pompadour - $ hg up 'roots(all())' - 0 files updated, 0 files merged, 6 files removed, 0 files unresolved - $ hg log -G - o 15 (elephant) pompadour - | - o 14 (elephant) arthur - | - | o 13 (monkey) merge with default - | |\ - o---+ 12 (elephant) babar - / / - | o 11 () c_zeta - | | - o | 10 (monkey) Huc - | | - o | 8 (monkey) zephir - |/ - o 6 () c_epsilon - | - o 3 () c_delta - | - o 2 () c_gamma - | - o 1 () c_beta - | - @ 0 () c_alpha - - -testing default destination on a branch - - $ hg up - 5 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg log -G - o 15 (elephant) pompadour - | - o 14 (elephant) arthur - | - | o 13 (monkey) merge with default - | |\ - o---+ 12 (elephant) babar - / / - | @ 11 () c_zeta - | | - o | 10 (monkey) Huc - | | - o | 8 (monkey) zephir - |/ - o 6 () c_epsilon - | - o 3 () c_delta - | - o 2 () c_gamma - | - o 1 () c_beta - | - o 0 () c_alpha - - -extra setup for topic -(making sure tip is not the topic) - - $ hg up 'desc(c_zeta)' - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ echo 'eta' >> 'eta' - $ hg add 'eta' - $ hg commit -m 'c_eta' - $ hg log -G - @ 16 () c_eta - | - | o 15 (elephant) pompadour - | | - | o 14 (elephant) arthur - | | - +---o 13 (monkey) merge with default - | | | - | o | 12 (elephant) babar - |/ / - o | 11 () c_zeta - | | - | o 10 (monkey) Huc - | | - | o 8 (monkey) zephir - |/ - o 6 () c_epsilon - | - o 3 () c_delta - | - o 2 () c_gamma - | - o 1 () c_beta - | - o 0 () c_alpha - - -Testing default destination for topic - - $ hg up 'roots(topic(elephant))' - switching to topic elephant - 1 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ hg up - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg log -G - o 16 () c_eta - | - | @ 15 (elephant) pompadour - | | - | o 14 (elephant) arthur - | | - +---o 13 (monkey) merge with default - | | | - | o | 12 (elephant) babar - |/ / - o | 11 () c_zeta - | | - | o 10 (monkey) Huc - | | - | o 8 (monkey) zephir - |/ - o 6 () c_epsilon - | - o 3 () c_delta - | - o 2 () c_gamma - | - o 1 () c_beta - | - o 0 () c_alpha - - -Testing default destination for topic - - $ hg up 'p1(roots(topic(elephant)))' - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ hg topic elephant - $ hg up - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg log -G - o 16 () c_eta - | - | @ 15 (elephant) pompadour - | | - | o 14 (elephant) arthur - | | - +---o 13 (monkey) merge with default - | | | - | o | 12 (elephant) babar - |/ / - o | 11 () c_zeta - | | - | o 10 (monkey) Huc - | | - | o 8 (monkey) zephir - |/ - o 6 () c_epsilon - | - o 3 () c_delta - | - o 2 () c_gamma - | - o 1 () c_beta - | - o 0 () c_alpha - - -Default destination for histedit -================================ - -By default histedit should edit with the current topic only -(even when based on other draft - - $ hg phase 'desc(c_zeta)' - 11: draft - $ HGEDITOR=cat hg histedit | grep pick - pick e44744d9ad73 12 babar - pick 38eea8439aee 14 arthur - pick 411315c48bdc 15 pompadour - # p, pick = use commit diff -r 765b2561fa90 -r fd24f1c7accd tests/test-topic-push.t --- a/tests/test-topic-push.t Thu May 18 23:35:16 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,414 +0,0 @@ - $ . "$TESTDIR/testlib/topic_setup.sh" - - $ cat << EOF >> $HGRCPATH - > [ui] - > logtemplate = {rev} {branch} {get(namespaces, "topics")} {phase} {desc|firstline}\n - > [ui] - > ssh =python "$RUNTESTDIR/dummyssh" - > EOF - - $ hg init main - $ hg init draft - $ cat << EOF >> draft/.hg/hgrc - > [phases] - > publish=False - > EOF - $ hg clone main client - updating to branch default - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ cat << EOF >> client/.hg/hgrc - > [paths] - > draft=../draft - > EOF - - -Testing core behavior to make sure we did not break anything -============================================================ - -Pushing a first changeset - - $ cd client - $ echo aaa > aaa - $ hg add aaa - $ hg commit -m 'CA' - $ hg outgoing -G - comparing with $TESTTMP/main (glob) - searching for changes - @ 0 default draft CA - - $ hg push - pushing to $TESTTMP/main (glob) - searching for changes - adding changesets - adding manifests - adding file changes - added 1 changesets with 1 changes to 1 files - -Pushing two heads - - $ echo aaa > bbb - $ hg add bbb - $ hg commit -m 'CB' - $ echo aaa > ccc - $ hg up 'desc(CA)' - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ hg add ccc - $ hg commit -m 'CC' - created new head - $ hg outgoing -G - comparing with $TESTTMP/main (glob) - searching for changes - @ 2 default draft CC - - o 1 default draft CB - - $ hg push - pushing to $TESTTMP/main (glob) - searching for changes - abort: push creates new remote head 9fe81b7f425d! - (merge or see 'hg help push' for details about pushing new heads) - [255] - $ hg outgoing -r 'desc(CB)' -G - comparing with $TESTTMP/main (glob) - searching for changes - o 1 default draft CB - - $ hg push -r 'desc(CB)' - pushing to $TESTTMP/main (glob) - searching for changes - adding changesets - adding manifests - adding file changes - added 1 changesets with 1 changes to 1 files - -Pushing a new branch - - $ hg branch mountain - marked working directory as branch mountain - (branches are permanent and global, did you want a bookmark?) - $ hg commit --amend - $ hg outgoing -G - comparing with $TESTTMP/main (glob) - searching for changes - @ 4 mountain draft CC - - $ hg push - pushing to $TESTTMP/main (glob) - searching for changes - abort: push creates new remote branches: mountain! - (use 'hg push --new-branch' to create new remote branches) - [255] - $ hg push --new-branch - pushing to $TESTTMP/main (glob) - searching for changes - adding changesets - adding manifests - adding file changes - added 1 changesets with 1 changes to 1 files (+1 heads) - 2 new obsolescence markers - -Including on non-publishing - - $ hg push --new-branch draft - pushing to $TESTTMP/draft (glob) - searching for changes - adding changesets - adding manifests - adding file changes - added 3 changesets with 3 changes to 3 files (+1 heads) - 2 new obsolescence markers - -Testing topic behavior -====================== - -Local peer tests ----------------- - - $ hg up -r 'desc(CA)' - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ hg topic babar - $ echo aaa > ddd - $ hg add ddd - $ hg commit -m 'CD' - $ hg log -G # keep track of phase because I saw some strange bug during developement - @ 5 default babar draft CD - | - | o 4 mountain public CC - |/ - | o 1 default public CB - |/ - o 0 default public CA - - -Pushing a new topic to a non publishing server should not be seen as a new head - - $ hg push draft - pushing to $TESTTMP/draft (glob) - searching for changes - adding changesets - adding manifests - adding file changes - added 1 changesets with 1 changes to 1 files (+1 heads) - $ hg log -G - @ 5 default babar draft CD - | - | o 4 mountain public CC - |/ - | o 1 default public CB - |/ - o 0 default public CA - - -Pushing a new topic to a publishing server should be seen as a new head - - $ hg push - pushing to $TESTTMP/main (glob) - searching for changes - abort: push creates new remote head 67f579af159d! - (merge or see 'hg help push' for details about pushing new heads) - [255] - $ hg log -G - @ 5 default babar draft CD - | - | o 4 mountain public CC - |/ - | o 1 default public CB - |/ - o 0 default public CA - - -wireprotocol tests ------------------- - - $ hg up -r 'desc(CA)' - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ hg topic celeste - $ echo aaa > eee - $ hg add eee - $ hg commit -m 'CE' - $ hg log -G # keep track of phase because I saw some strange bug during developement - @ 6 default celeste draft CE - | - | o 5 default babar draft CD - |/ - | o 4 mountain public CC - |/ - | o 1 default public CB - |/ - o 0 default public CA - - -Pushing a new topic to a non publishing server without topic -> new head - - $ cat << EOF >> ../draft/.hg/hgrc - > [extensions] - > topic=! - > EOF - $ hg push ssh://user@dummy/draft - pushing to ssh://user@dummy/draft - searching for changes - abort: push creates new remote head 84eaf32db6c3! - (merge or see 'hg help push' for details about pushing new heads) - [255] - $ hg log -G - @ 6 default celeste draft CE - | - | o 5 default babar draft CD - |/ - | o 4 mountain public CC - |/ - | o 1 default public CB - |/ - o 0 default public CA - - -Pushing a new topic to a non publishing server should not be seen as a new head - - $ printf "topic=" >> ../draft/.hg/hgrc - $ hg config extensions.topic >> ../draft/.hg/hgrc - $ hg push ssh://user@dummy/draft - pushing to ssh://user@dummy/draft - searching for changes - remote: adding changesets - remote: adding manifests - remote: adding file changes - remote: added 1 changesets with 1 changes to 1 files (+1 heads) - $ hg log -G - @ 6 default celeste draft CE - | - | o 5 default babar draft CD - |/ - | o 4 mountain public CC - |/ - | o 1 default public CB - |/ - o 0 default public CA - - -Pushing a new topic to a publishing server should be seen as a new head - - $ hg push ssh://user@dummy/main - pushing to ssh://user@dummy/main - searching for changes - abort: push creates new remote head 67f579af159d! - (merge or see 'hg help push' for details about pushing new heads) - [255] - $ hg log -G - @ 6 default celeste draft CE - | - | o 5 default babar draft CD - |/ - | o 4 mountain public CC - |/ - | o 1 default public CB - |/ - o 0 default public CA - - -Check that we reject multiple head on the same topic ----------------------------------------------------- - - $ hg up 'desc(CB)' - 1 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ hg topic babar - $ echo aaa > fff - $ hg add fff - $ hg commit -m 'CF' - $ hg log -G - @ 7 default babar draft CF - | - | o 6 default celeste draft CE - | | - | | o 5 default babar draft CD - | |/ - | | o 4 mountain public CC - | |/ - o | 1 default public CB - |/ - o 0 default public CA - - - $ hg push draft - pushing to $TESTTMP/draft (glob) - searching for changes - abort: push creates new remote head f0bc62a661be on branch 'default:babar'! - (merge or see 'hg help push' for details about pushing new heads) - [255] - -Multiple head on a branch merged in a topic changesets ------------------------------------------------------------------------- - - - $ hg up 'desc(CA)' - 0 files updated, 0 files merged, 2 files removed, 0 files unresolved - $ echo aaa > ggg - $ hg add ggg - $ hg commit -m 'CG' - created new head - $ hg up 'desc(CF)' - switching to topic babar - 2 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ hg merge 'desc(CG)' - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - (branch merge, don't forget to commit) - $ hg commit -m 'CM' - $ hg log -G - @ 9 default babar draft CM - |\ - | o 8 default draft CG - | | - o | 7 default babar draft CF - | | - | | o 6 default celeste draft CE - | |/ - | | o 5 default babar draft CD - | |/ - | | o 4 mountain public CC - | |/ - o | 1 default public CB - |/ - o 0 default public CA - - -Reject when pushing to draft - - $ hg push draft -r . - pushing to $TESTTMP/draft (glob) - searching for changes - abort: push creates new remote head 4937c4cad39e! - (merge or see 'hg help push' for details about pushing new heads) - [255] - - -Reject when pushing to publishing - - $ hg push -r . - pushing to $TESTTMP/main (glob) - searching for changes - adding changesets - adding manifests - adding file changes - added 3 changesets with 2 changes to 2 files - - $ cd .. - -Test phase move -================================== - -setup, two repo knowns about two small topic branch - - $ hg init repoA - $ hg clone repoA repoB - updating to branch default - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ cat << EOF >> repoA/.hg/hgrc - > [phases] - > publish=False - > EOF - $ cat << EOF >> repoB/.hg/hgrc - > [phases] - > publish=False - > EOF - $ cd repoA - $ echo aaa > base - $ hg add base - $ hg commit -m 'CBASE' - $ echo aaa > aaa - $ hg add aaa - $ hg topic topicA - $ hg commit -m 'CA' - $ hg up 'desc(CBASE)' - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ echo aaa > bbb - $ hg add bbb - $ hg topic topicB - $ hg commit -m 'CB' - $ cd .. - $ hg push -R repoA repoB - pushing to repoB - searching for changes - adding changesets - adding manifests - adding file changes - added 3 changesets with 3 changes to 3 files (+1 heads) - $ hg log -G -R repoA - @ 2 default topicB draft CB - | - | o 1 default topicA draft CA - |/ - o 0 default draft CBASE - - -We turn different topic to public on each side, - - $ hg -R repoA phase --public topicA - $ hg -R repoB phase --public topicB - -Pushing should complain because it create to heads on default - - $ hg push -R repoA repoB - pushing to repoB - searching for changes - no changes found - abort: push create a new head on branch "default" - [255] diff -r 765b2561fa90 -r fd24f1c7accd tests/test-topic-stack-data.t --- a/tests/test-topic-stack-data.t Thu May 18 23:35:16 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,270 +0,0 @@ -Setup -===== - - $ . "$TESTDIR/testlib/topic_setup.sh" - - $ hg init test-list - $ cd test-list - $ cat <> .hg/hgrc - > [phases] - > publish=false - > EOF - $ cat <> $HGRCPATH - > [experimental] - > # disable the new graph style until we drop 3.7 support - > graphstyle.missing = | - > # turn evolution on - > evolution=all - > EOF - - - $ mkcommit() { - > echo "$1" > "$1" - > hg add "$1" - > hg ci -m "add $1" - > } - -Build some basic graph ----------------------- - - $ for x in base_a base_b base_c base_d base_e ; do - > mkcommit $x - > done - -Add another branch with two heads - - $ hg up 'desc(base_a)' - 0 files updated, 0 files merged, 4 files removed, 0 files unresolved - $ hg branch lake - marked working directory as branch lake - (branches are permanent and global, did you want a bookmark?) - $ mkcommit lake_a - $ mkcommit lake_b - $ hg up 'desc(lake_a)' - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit lake_c - created new head - - -Add some topics ---------------- - -A simple topic that need rebasing - - $ hg up 'desc(base_c)' - 2 files updated, 0 files merged, 2 files removed, 0 files unresolved - $ hg topic baz - $ mkcommit baz_a - $ mkcommit baz_b - -A simple topic with unstability - - $ hg up 'desc(base_d)' - 1 files updated, 0 files merged, 2 files removed, 0 files unresolved - $ hg topic fuz - $ mkcommit fuz_a - $ mkcommit fuz_b - $ mkcommit fuz_c - $ hg up 'desc(fuz_a)' - 0 files updated, 0 files merged, 2 files removed, 0 files unresolved - $ hg commit --amend --message 'fuz1_a' - -A topic with multiple heads - - $ hg up 'desc(base_e)' - 1 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ hg topic bar - $ mkcommit bar_a - $ mkcommit bar_b - $ mkcommit bar_c - $ hg up 'desc(bar_b)' - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit bar_d - $ mkcommit bar_e - $ hg up 'desc(bar_d)' - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ hg commit --amend --message 'bar1_d' - -topic 'foo' on the multi headed branch - - $ hg up 'desc(lake_a)' - 1 files updated, 0 files merged, 7 files removed, 0 files unresolved - $ hg topic foo - $ mkcommit foo_a - $ mkcommit foo_b - -Summary -------- - - $ hg summary - parent: 21:3e54b49a3113 tip - add foo_b - branch: lake - commit: (clean) - update: 2 new changesets (update) - phases: 22 draft - unstable: 3 changesets - topic: foo - $ hg log --graph -T '{desc} ({branch}) [{topic}]' - @ add foo_b (lake) [] - | - o add foo_a (lake) [] - | - | o bar1_d (default) [] - | | - | | o add bar_e (default) [] - | | | - | | x add bar_d (default) [] - | |/ - | | o add bar_c (default) [] - | |/ - | o add bar_b (default) [] - | | - | o add bar_a (default) [] - | | - | | o fuz1_a (default) [] - | | | - | | | o add fuz_c (default) [] - | | | | - | | | o add fuz_b (default) [] - | | | | - | | | x add fuz_a (default) [] - | | |/ - | | | o add baz_b (default) [] - | | | | - | | | o add baz_a (default) [] - | | | | - +-------o add lake_c (lake) [] - | | | | - +-------o add lake_b (lake) [] - | | | | - o | | | add lake_a (lake) [] - | | | | - | o | | add base_e (default) [] - | |/ / - | o / add base_d (default) [] - | |/ - | o add base_c (default) [] - | | - | o add base_b (default) [] - |/ - o add base_a (default) [] - - -Actual Testing -============== - -basic output - - $ hg topic - bar - baz - * foo - fuz - -quiet version - - $ hg topic --quiet - bar - baz - foo - fuz - -verbose - - $ hg topic --verbose - bar (on branch: default, 5 changesets, 1 troubled, 2 heads) - baz (on branch: default, 2 changesets, 2 behind) - * foo (on branch: lake, 2 changesets, ambiguous destination) - fuz (on branch: default, 3 changesets, 2 troubled, 1 behind) - -json - - $ hg topic -T json - [ - { - "active": false, - "topic": "bar" - }, - { - "active": false, - "topic": "baz" - }, - { - "active": true, - "topic": "foo" - }, - { - "active": false, - "topic": "fuz" - } - ] - -json --verbose - - $ hg topic -T json --verbose - [ - { - "active": false, - "branches+": "default", - "changesetcount": 5, - "headcount": 2, - "topic": "bar", - "troubledcount": 1 - }, - { - "active": false, - "behindcount": 2, - "branches+": "default", - "changesetcount": 2, - "topic": "baz" - }, - { - "active": true, - "behinderror": "ambiguous destination", - "branches+": "lake", - "changesetcount": 2, - "topic": "foo" - }, - { - "active": false, - "behindcount": 1, - "branches+": "default", - "changesetcount": 3, - "topic": "fuz", - "troubledcount": 2 - } - ] - -Also test this situation with 'hg stack' -======================================= - - $ hg stack bar - ### topic: bar (2 heads) - ### branch: default - t5: add bar_c - t2^ add bar_b (base) - t4$ add bar_e (unstable) - t3: bar1_d - t2: add bar_b - t1: add bar_a - ^ add base_e - $ hg stack baz - ### topic: baz - ### branch: default, 2 behind - t2: add baz_b - t1: add baz_a - ^ add base_c - $ hg stack foo - ### topic: foo - ### branch: lake, ambigious rebase destination - t2@ add foo_b (current) - t1: add foo_a - ^ add lake_a - $ hg stack fuz - ### topic: fuz - ### branch: default, 1 behind - t3$ add fuz_c (unstable) - t2$ add fuz_b (unstable) - t1: fuz1_a - ^ add base_d diff -r 765b2561fa90 -r fd24f1c7accd tests/test-topic-stack.t --- a/tests/test-topic-stack.t Thu May 18 23:35:16 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,323 +0,0 @@ - $ . "$TESTDIR/testlib/topic_setup.sh" - -Initial setup - - - $ cat << EOF >> $HGRCPATH - > [extensions] - > color = - > [ui] - > logtemplate = {rev} {branch} \{{get(namespaces, "topics")}} {phase} {desc|firstline}\n - > [experimental] - > evolution=createmarkers,exchange,allowunstable - > EOF - - $ hg init main - $ cd main - $ hg topic other - $ echo aaa > aaa - $ hg add aaa - $ hg commit -m c_a - $ echo aaa > bbb - $ hg add bbb - $ hg commit -m c_b - $ hg topic foo - $ echo aaa > ccc - $ hg add ccc - $ hg commit -m c_c - $ echo aaa > ddd - $ hg add ddd - $ hg commit -m c_d - $ echo aaa > eee - $ hg add eee - $ hg commit -m c_e - $ echo aaa > fff - $ hg add fff - $ hg commit -m c_f - $ hg log -G - @ 5 default {foo} draft c_f - | - o 4 default {foo} draft c_e - | - o 3 default {foo} draft c_d - | - o 2 default {foo} draft c_c - | - o 1 default {other} draft c_b - | - o 0 default {other} draft c_a - - -Check that topic without any parent does not crash --list ---------------------------------------------------------- - - $ hg up other - switching to topic other - 0 files updated, 0 files merged, 4 files removed, 0 files unresolved - $ hg topic --list - ### topic: other - ### branch: default - t2@ c_b (current) - t1: c_a - $ hg phase --public 'topic("other")' - $ hg up foo - switching to topic foo - 4 files updated, 0 files merged, 0 files removed, 0 files unresolved - -Simple test ------------ - -'hg stack' list all changeset in the topic - - $ hg topic - * foo - $ hg stack - ### topic: foo - ### branch: default - t4@ c_f (current) - t3: c_e - t2: c_d - t1: c_c - ^ c_b - $ hg stack -Tjson | python -m json.tool - [ - { - "isentry": true, - "topic.stack.desc": "c_f", - "topic.stack.index": 4, - "topic.stack.state": [ - "current" - ], - "topic.stack.state.symbol": "@" - }, - { - "isentry": true, - "topic.stack.desc": "c_e", - "topic.stack.index": 3, - "topic.stack.state": [ - "clean" - ], - "topic.stack.state.symbol": ":" - }, - { - "isentry": true, - "topic.stack.desc": "c_d", - "topic.stack.index": 2, - "topic.stack.state": [ - "clean" - ], - "topic.stack.state.symbol": ":" - }, - { - "isentry": true, - "topic.stack.desc": "c_c", - "topic.stack.index": 1, - "topic.stack.state": [ - "clean" - ], - "topic.stack.state.symbol": ":" - }, - { - "isentry": false, - "topic.stack.desc": "c_b", - "topic.stack.state": [ - "base" - ], - "topic.stack.state.symbol": "^" - } - ] - -error case, nothing to list - - $ hg topic --clear - $ hg stack - abort: no active topic to list - [255] - -Test "t#" reference -------------------- - - - $ hg up t2 - abort: cannot resolve "t2": no active topic - [255] - $ hg topic foo - $ hg up t42 - abort: cannot resolve "t42": topic "foo" has only 4 changesets - [255] - $ hg up t2 - 0 files updated, 0 files merged, 2 files removed, 0 files unresolved - $ hg summary - parent: 3:e629654d7050 - c_d - branch: default - commit: (clean) - update: (current) - phases: 4 draft - topic: foo - -Case with some of the topic unstable ------------------------------------- - - $ echo bbb > ddd - $ hg commit --amend - $ hg log -G - @ 7 default {foo} draft c_d - | - | o 5 default {foo} draft c_f - | | - | o 4 default {foo} draft c_e - | | - | x 3 default {foo} draft c_d - |/ - o 2 default {foo} draft c_c - | - o 1 default {} public c_b - | - o 0 default {} public c_a - - $ hg topic --list - ### topic: foo - ### branch: default - t4$ c_f (unstable) - t3$ c_e (unstable) - t2@ c_d (current) - t1: c_c - ^ c_b - $ hg up t3 - 2 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg topic --list - ### topic: foo - ### branch: default - t4$ c_f (unstable) - t3@ c_e (current) - t2: c_d - t1: c_c - ^ c_b - $ hg topic --list --color=debug - [topic.stack.summary.topic|### topic: [topic.active|foo]] - [topic.stack.summary.branches|### branch: default] - [topic.stack.index topic.stack.index.unstable|t4][topic.stack.state topic.stack.state.unstable|$] [topic.stack.desc topic.stack.desc.unstable|c_f][topic.stack.state topic.stack.state.unstable| (unstable)] - [topic.stack.index topic.stack.index.current|t3][topic.stack.state topic.stack.state.current|@] [topic.stack.desc topic.stack.desc.current|c_e][topic.stack.state topic.stack.state.current| (current)] - [topic.stack.index topic.stack.index.clean|t2][topic.stack.state topic.stack.state.clean|:] [topic.stack.desc topic.stack.desc.clean|c_d] - [topic.stack.index topic.stack.index.clean|t1][topic.stack.state topic.stack.state.clean|:] [topic.stack.desc topic.stack.desc.clean|c_c] - [topic.stack.state topic.stack.state.base|^] [topic.stack.desc topic.stack.desc.base|c_b] - $ hg up t2 - 1 files updated, 0 files merged, 1 files removed, 0 files unresolved - -Also test the revset: - - $ hg log -r 'stack()' - 2 default {foo} draft c_c - 7 default {foo} draft c_d - 4 default {foo} draft c_e - 5 default {foo} draft c_f - -Case with multiple heads on the topic -------------------------------------- - -Make things linear again - - $ hg rebase -s 'desc(c_e)' -d 'desc(c_d) - obsolete()' - rebasing 4:0f9ac936c87d "c_e" - rebasing 5:6559e6d93aea "c_f" - $ hg log -G - o 9 default {foo} draft c_f - | - o 8 default {foo} draft c_e - | - @ 7 default {foo} draft c_d - | - o 2 default {foo} draft c_c - | - o 1 default {} public c_b - | - o 0 default {} public c_a - - - -Create the second branch - - $ hg up 'desc(c_d)' - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ echo aaa > ggg - $ hg add ggg - $ hg commit -m c_g - $ echo aaa > hhh - $ hg add hhh - $ hg commit -m c_h - $ hg log -G - @ 11 default {foo} draft c_h - | - o 10 default {foo} draft c_g - | - | o 9 default {foo} draft c_f - | | - | o 8 default {foo} draft c_e - |/ - o 7 default {foo} draft c_d - | - o 2 default {foo} draft c_c - | - o 1 default {} public c_b - | - o 0 default {} public c_a - - -Test output - - $ hg top -l - ### topic: foo (2 heads) - ### branch: default - t6: c_f - t5: c_e - t2^ c_d (base) - t4@ c_h (current) - t3: c_g - t2: c_d - t1: c_c - ^ c_b - -Case with multiple heads on the topic with unstability involved ---------------------------------------------------------------- - -We amend the message to make sure the display base pick the right changeset - - $ hg up 'desc(c_d)' - 0 files updated, 0 files merged, 2 files removed, 0 files unresolved - $ echo ccc > ddd - $ hg commit --amend -m 'c_D' - $ hg rebase -d . -s 'desc(c_g)' - rebasing 10:81264ae8a36a "c_g" - rebasing 11:fde5f5941642 "c_h" - $ hg log -G - o 15 default {foo} draft c_h - | - o 14 default {foo} draft c_g - | - @ 13 default {foo} draft c_D - | - | o 9 default {foo} draft c_f - | | - | o 8 default {foo} draft c_e - | | - | x 7 default {foo} draft c_d - |/ - o 2 default {foo} draft c_c - | - o 1 default {} public c_b - | - o 0 default {} public c_a - - - $ hg topic --list - ### topic: foo (2 heads) - ### branch: default - t6$ c_f (unstable) - t5$ c_e (unstable) - t2^ c_D (base) - t4: c_h - t3: c_g - t2@ c_D (current) - t1: c_c - ^ c_b diff -r 765b2561fa90 -r fd24f1c7accd tests/test-topic-tutorial.t --- a/tests/test-topic-tutorial.t Thu May 18 23:35:16 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,468 +0,0 @@ -============== -Topic Tutorial -============== - -.. This test file is also supposed to be able to compile as a rest file. - - -.. Some Setup:: - - $ . "$TESTDIR/testlib/topic_setup.sh" - $ hg init server - $ cd server - $ cat >> .hg/hgrc << EOF - > [ui] - > user= Shopping Master - > EOF - $ cat >> shopping << EOF - > Spam - > Whizzo butter - > Albatross - > Rat (rather a lot) - > Jugged fish - > Blancmange - > Salmon mousse - > EOF - $ hg commit -A -m "Shopping list" - adding shopping - $ cd .. - $ hg clone server client - updating to branch default - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ cd client - $ cat >> .hg/hgrc << EOF - > [ui] - > user= Tutorial User - > EOF - -Topic branches are lightweight branches which disappear when changes are -finalized (move to the public phase). They can help users to organise and share -their unfinished work. - -Topic Basics -============ - -Let's says we use Mercurial to manage our shopping list:: - - $ hg log --graph - @ changeset: 0:38da43f0a2ea - tag: tip - user: test - date: Thu Jan 01 00:00:00 1970 +0000 - summary: Shopping list - - -We are about to do some edition to this list and would like to do them within -a topic. Creating a new topic is done using the ``topic`` command:: - - $ hg topic food - -As for named branch, our topic is active but it does not contains any changesets yet:: - - $ hg topic - * food - $ hg summary - parent: 0:38da43f0a2ea tip - Shopping list - branch: default - commit: (clean) - update: (current) - topic: food - $ hg log --graph - @ changeset: 0:38da43f0a2ea - tag: tip - user: test - date: Thu Jan 01 00:00:00 1970 +0000 - summary: Shopping list - - -Our next commit will be part of the active topic:: - - $ cat >> shopping << EOF - > Egg - > Suggar - > Vinegar - > Oil - > EOF - $ hg commit -m "adding condiments" - $ hg log --graph --rev 'topic("food")' - @ changeset: 1:13900241408b - | tag: tip - ~ topic: food - user: test - date: Thu Jan 01 00:00:00 1970 +0000 - summary: adding condiments - - -And future commit will be part of that topic too:: - - $ cat >> shopping << EOF - > Bananas - > Pear - > Apple - > EOF - $ hg commit -m "adding fruits" - $ hg log --graph --rev 'topic("food")' - @ changeset: 2:287de11b401f - | tag: tip - | topic: food - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: adding fruits - | - o changeset: 1:13900241408b - | topic: food - ~ user: test - date: Thu Jan 01 00:00:00 1970 +0000 - summary: adding condiments - - -We can get a compact view of the content of our topic using the ``stack`` command:: - - $ hg stack - ### topic: food - ### branch: default - t2@ adding fruits (current) - t1: adding condiments - ^ Shopping list - -The topic desactivate when we update away from it:: - - $ hg up default - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg topic - food - -Note that ``default`` (name of the branch) now refers to the tipmost changeset of default without a topic:: - - $ hg log --graph - o changeset: 2:287de11b401f - | tag: tip - | topic: food - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: adding fruits - | - o changeset: 1:13900241408b - | topic: food - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: adding condiments - | - @ changeset: 0:38da43f0a2ea - user: test - date: Thu Jan 01 00:00:00 1970 +0000 - summary: Shopping list - - -And updating back to the topic reactivate it:: - - $ hg up food - switching to topic food - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg topic - * food - -The name used for updating does not affect the activation of the topic, updating to a revision part of a topic will activate it in all cases:: - - $ hg up default - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg up --rev 'desc("condiments")' - switching to topic food - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg topic - * food - -.. server side activity:: - - $ cd ../server/ - $ cat > shopping << EOF - > T-Shirt - > Trousers - > Spam - > Whizzo butter - > Albatross - > Rat (rather a lot) - > Jugged fish - > Blancmange - > Salmon mousse - > EOF - $ hg commit -A -m "Adding clothes" - $ cd ../client - -Topic will also affect rebase and merge destination. Let's pull the latest update from the main server:: - - $ hg pull - pulling from $TESTTMP/server (glob) - searching for changes - adding changesets - adding manifests - adding file changes - added 1 changesets with 1 changes to 1 files (+1 heads) - (run 'hg heads' to see heads) - $ hg log -G - o changeset: 3:6104862e8b84 - | tag: tip - | parent: 0:38da43f0a2ea - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: Adding clothes - | - | o changeset: 2:287de11b401f - | | topic: food - | | user: test - | | date: Thu Jan 01 00:00:00 1970 +0000 - | | summary: adding fruits - | | - | @ changeset: 1:13900241408b - |/ topic: food - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: adding condiments - | - o changeset: 0:38da43f0a2ea - user: test - date: Thu Jan 01 00:00:00 1970 +0000 - summary: Shopping list - - -The topic head will not be considered when merge from the new head of the branch:: - - $ hg up default - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg merge - abort: branch 'default' has one head - please merge with an explicit rev - (run 'hg heads' to see all heads) - [255] - -But the topic will see that branch head as a valid destination:: - - $ hg up food - switching to topic food - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg rebase - rebasing 1:13900241408b "adding condiments" - merging shopping - rebasing 2:287de11b401f "adding fruits" - merging shopping - $ hg log --graph - @ changeset: 5:2d50db8b5b4c - | tag: tip - | topic: food - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: adding fruits - | - o changeset: 4:4011b46eeb33 - | topic: food - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: adding condiments - | - o changeset: 3:6104862e8b84 - | parent: 0:38da43f0a2ea - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: Adding clothes - | - o changeset: 0:38da43f0a2ea - user: test - date: Thu Jan 01 00:00:00 1970 +0000 - summary: Shopping list - - -The topic information will fade out when we publish the changesets:: - - $ hg topic - food - $ hg push - pushing to $TESTTMP/server (glob) - searching for changes - adding changesets - adding manifests - adding file changes - added 2 changesets with 2 changes to 1 files - 2 new obsolescence markers - $ hg topic - $ hg log --graph - @ changeset: 5:2d50db8b5b4c - | tag: tip - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: adding fruits - | - o changeset: 4:4011b46eeb33 - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: adding condiments - | - o changeset: 3:6104862e8b84 - | parent: 0:38da43f0a2ea - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: Adding clothes - | - o changeset: 0:38da43f0a2ea - user: test - date: Thu Jan 01 00:00:00 1970 +0000 - summary: Shopping list - - $ hg up default - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved - -Working with Multiple Topics -============================ - -In the above example, topic are not bring much benefit since you only have one -line of developement. Topic start to be more useful when you have to work on -multiple features are the same time. - -We might go shopping in a hardware store in the same go, so let's add some -tools to the shopping list withing a new topic:: - - $ hg topic tools - $ echo hammer >> shopping - $ hg ci -m 'Adding hammer' - $ echo saw >> shopping - $ hg ci -m 'Adding saw' - $ echo drill >> shopping - $ hg ci -m 'Adding drill' - -But are not sure to actually go in the hardward store, so in the meantime, we -want to extend the list with drinks. We go back to the official default branch -and start a new topic:: - - $ hg up default - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg topic drinks - $ echo 'apple juice' >> shopping - $ hg ci -m 'Adding apple juice' - $ echo 'orange juice' >> shopping - $ hg ci -m 'Adding orange juice' - -We now have two topics:: - - $ hg topic - * drinks - tools - -The information ``hg stack`` command adapt to the active topic:: - - $ hg stack - ### topic: drinks - ### branch: default - t2@ Adding orange juice (current) - t1: Adding apple juice - ^ adding fruits - $ hg up tools - switching to topic tools - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg stack - ### topic: tools - ### branch: default - t3@ Adding drill (current) - t2: Adding saw - t1: Adding hammer - ^ adding fruits - -They are seen as independant branch by Mercurial. No rebase or merge betwen them will be attempted by default:: - - $ hg rebase - nothing to rebase - [1] - -.. server activity:: - - $ cd ../server - $ hg up - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ mv shopping foo - $ echo 'Coat' > shopping - $ cat foo >> shopping - $ hg ci -m 'add a coat' - $ echo 'Coat' > shopping - $ echo 'Shoes' >> shopping - $ cat foo >> shopping - $ hg rm foo - not removing foo: file is untracked - [1] - $ hg ci -m 'add a pair of shoes' - $ cd ../client - -Lets see what other people did in the mean time:: - - $ hg pull - pulling from $TESTTMP/server (glob) - searching for changes - adding changesets - adding manifests - adding file changes - added 2 changesets with 2 changes to 1 files (+1 heads) - (run 'hg heads' to see heads) - -There is new changes! We can simply use ``hg rebase`` to update our changeset on top of the latest:: - - $ hg rebase - rebasing 6:183984ef46d1 "Adding hammer" - merging shopping - rebasing 7:cffff85af537 "Adding saw" - merging shopping - rebasing 8:34255b455dac "Adding drill" - merging shopping - -But what about the other topic? You can use 'hg topic --verbose' to see information about them:: - - $ hg topic --verbose - drinks (on branch: default, 2 changesets, 2 behind) - tools (on branch: default, 3 changesets) - -The "2 behind" is telling you that there is 2 new changesets on the named branch of the topic. You need to merge or rebase to incorporate them. - -Pushing that topic would create a new heads will be prevented:: - - $ hg push --rev drinks - pushing to $TESTTMP/server (glob) - searching for changes - abort: push creates new remote head 70dfa201ed73! - (merge or see 'hg help push' for details about pushing new heads) - [255] - - -Even after a rebase Pushing all active topics at the same time will complains about the multiple heads it would create on that branch:: - - $ hg rebase -b drinks - rebasing 9:8dfa45bd5e0c "Adding apple juice" - merging shopping - rebasing 10:70dfa201ed73 "Adding orange juice" - merging shopping - switching to topic tools - $ hg push - pushing to $TESTTMP/server (glob) - searching for changes - abort: push creates new remote head 4cd7c1591a67! - (merge or see 'hg help push' for details about pushing new heads) - [255] - -Publishing only one of them is allowed (as long as it does not create a new branch head has we just saw in the previous case):: - - $ hg push -r drinks - pushing to $TESTTMP/server (glob) - searching for changes - adding changesets - adding manifests - adding file changes - added 2 changesets with 2 changes to 1 files - 2 new obsolescence markers - -The publishing topic has now vanished, and the one still draft is now marked as "behind":: - - $ hg topic --verbose - * tools (on branch: default, 3 changesets, 2 behind) - $ hg stack - ### topic: tools - ### branch: default, 2 behind - t3@ Adding drill (current) - t2: Adding saw - t1: Adding hammer - ^ add a pair of shoes - diff -r 765b2561fa90 -r fd24f1c7accd tests/test-topic.t --- a/tests/test-topic.t Thu May 18 23:35:16 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,654 +0,0 @@ - $ . "$TESTDIR/testlib/topic_setup.sh" - - $ hg init pinky - $ cd pinky - $ cat <> .hg/hgrc - > [phases] - > publish=false - > EOF - $ cat <> $HGRCPATH - > [experimental] - > # disable the new graph style until we drop 3.7 support - > graphstyle.missing = | - > EOF - - $ hg help topics - hg topics [TOPIC] - - View current topic, set current topic, or see all topics. - - The --verbose version of this command display various information on the - state of each topic. - - options: - - --clear clear active topic if any - --change VALUE revset of existing revisions to change topic - -l --list show the stack of changeset in the topic - - (some details hidden, use --verbose to show complete help) - $ hg topics - -Test topics interaction with evolution: - - $ hg topics --config experimental.evolution= - $ hg topics --config experimental.evolution= --change . bob - abort: must have obsolete enabled to use --change - [255] - -Create some changes: - - $ for x in alpha beta gamma delta ; do - > echo file $x >> $x - > hg addremove - > hg ci -m "Add file $x" - > done - adding alpha - adding beta - adding gamma - adding delta - -Still no topics - $ hg topics - -Test commit flag and help text - - $ echo stuff >> alpha - $ HGEDITOR=cat hg ci -t topicflag - - - HG: Enter commit message. Lines beginning with 'HG:' are removed. - HG: Leave message empty to abort commit. - HG: -- - HG: user: test - HG: topic 'topicflag' - HG: branch 'default' - HG: changed alpha - abort: empty commit message - [255] - $ hg revert alpha - $ hg topic - * topicflag - -Make a topic - $ hg topic narf - $ hg topics - * narf - $ echo topic work >> alpha - $ hg ci -m 'start on narf' - $ hg co .^ - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg topic fran - $ hg topics - * fran - narf - $ echo >> fran work >> beta - $ hg ci -m 'start on fran' - $ hg co narf - switching to topic narf - 2 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg topic - fran - * narf - $ hg log -r . -T '{topics}\n' - narf - $ echo 'narf!!!' >> alpha - $ hg ci -m 'narf!' - $ hg log -G - @ changeset: 6:7c34953036d6 - | tag: tip - | topic: narf - | parent: 4:fb147b0b417c - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: narf! - | - | o changeset: 5:0469d521db49 - | | topic: fran - | | parent: 3:a53952faf762 - | | user: test - | | date: Thu Jan 01 00:00:00 1970 +0000 - | | summary: start on fran - | | - o | changeset: 4:fb147b0b417c - |/ topic: narf - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: start on narf - | - o changeset: 3:a53952faf762 - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: Add file delta - | - o changeset: 2:15d1eb11d2fa - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: Add file gamma - | - o changeset: 1:c692ea2c9224 - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: Add file beta - | - o changeset: 0:c2b7d2f7d14b - user: test - date: Thu Jan 01 00:00:00 1970 +0000 - summary: Add file alpha - - -Exchanging of topics: - $ cd .. - $ hg init brain - $ hg -R pinky push -r 4 brain - pushing to brain - searching for changes - adding changesets - adding manifests - adding file changes - added 5 changesets with 5 changes to 4 files - -Export - - $ hg -R pinky export - # HG changeset patch - # User test - # Date 0 0 - # Thu Jan 01 00:00:00 1970 +0000 - # Node ID 7c34953036d6a36eae468c550d0592b89ee8bffc - # Parent fb147b0b417c25ca15547cd945acf51cf8dcaf02 - # EXP-Topic narf - narf! - - diff -r fb147b0b417c -r 7c34953036d6 alpha - --- a/alpha Thu Jan 01 00:00:00 1970 +0000 - +++ b/alpha Thu Jan 01 00:00:00 1970 +0000 - @@ -1,2 +1,3 @@ - file alpha - topic work - +narf!!! - -Import - - $ hg -R pinky export > narf.diff - $ hg -R pinky --config extensions.strip= strip . - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - saved backup bundle to $TESTTMP/pinky/.hg/strip-backup/7c34953036d6-1ff3bae2-backup.hg (glob) - $ hg -R pinky import narf.diff - applying narf.diff - $ hg -R pinky log -r . - changeset: 6:7c34953036d6 - tag: tip - topic: narf - parent: 4:fb147b0b417c - user: test - date: Thu Jan 01 00:00:00 1970 +0000 - summary: narf! - -Now that we've pushed to brain, the work done on narf is no longer a -draft, so we won't see that topic name anymore: - - $ hg log -R pinky -G - @ changeset: 6:7c34953036d6 - | tag: tip - | topic: narf - | parent: 4:fb147b0b417c - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: narf! - | - | o changeset: 5:0469d521db49 - | | topic: fran - | | parent: 3:a53952faf762 - | | user: test - | | date: Thu Jan 01 00:00:00 1970 +0000 - | | summary: start on fran - | | - o | changeset: 4:fb147b0b417c - |/ user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: start on narf - | - o changeset: 3:a53952faf762 - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: Add file delta - | - o changeset: 2:15d1eb11d2fa - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: Add file gamma - | - o changeset: 1:c692ea2c9224 - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: Add file beta - | - o changeset: 0:c2b7d2f7d14b - user: test - date: Thu Jan 01 00:00:00 1970 +0000 - summary: Add file alpha - - $ cd brain - $ hg co tip - 4 files updated, 0 files merged, 0 files removed, 0 files unresolved - -Because the change is public, we won't inherit the topic from narf. - - $ hg topic - $ echo what >> alpha - $ hg topic query - $ hg ci -m 'what is narf, pinky?' - $ hg log -Gl2 - @ changeset: 5:c01515cfc331 - | tag: tip - | topic: query - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: what is narf, pinky? - | - o changeset: 4:fb147b0b417c - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: start on narf - | - $ hg push -f ../pinky -r query - pushing to ../pinky - searching for changes - adding changesets - adding manifests - adding file changes - added 1 changesets with 1 changes to 1 files (+1 heads) - $ hg -R ../pinky log -Gl 4 - o changeset: 7:c01515cfc331 - | tag: tip - | topic: query - | parent: 4:fb147b0b417c - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: what is narf, pinky? - | - | @ changeset: 6:7c34953036d6 - |/ topic: narf - | parent: 4:fb147b0b417c - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: narf! - | - | o changeset: 5:0469d521db49 - | | topic: fran - | | parent: 3:a53952faf762 - | | user: test - | | date: Thu Jan 01 00:00:00 1970 +0000 - | | summary: start on fran - | | - o | changeset: 4:fb147b0b417c - |/ user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: start on narf - | - $ hg topics - * query - $ cd ../pinky - $ hg co query - switching to topic query - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ echo answer >> alpha - $ hg ci -m 'Narf is like `zort` or `poit`!' - $ hg merge narf - merging alpha - warning: conflicts while merging alpha! (edit, then use 'hg resolve --mark') - 0 files updated, 0 files merged, 0 files removed, 1 files unresolved - use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon - [1] - $ hg revert -r narf alpha - $ hg resolve -m alpha - (no more unresolved files) - $ hg topic narf - $ hg ci -m 'Finish narf' - $ hg topics - fran - * narf - query - $ hg debugnamecomplete # branch:topic here is a buggy side effect - default - default:fran - default:narf - default:query - fran - narf - query - tip - $ hg phase --public narf - -POSSIBLE BUG: narf topic stays alive even though we just made all -narf commits public: - - $ hg topics - fran - * narf - $ hg log -Gl 6 - @ changeset: 9:ae074045b7a7 - |\ tag: tip - | | parent: 8:54c943c1c167 - | | parent: 6:7c34953036d6 - | | user: test - | | date: Thu Jan 01 00:00:00 1970 +0000 - | | summary: Finish narf - | | - | o changeset: 8:54c943c1c167 - | | user: test - | | date: Thu Jan 01 00:00:00 1970 +0000 - | | summary: Narf is like `zort` or `poit`! - | | - | o changeset: 7:c01515cfc331 - | | parent: 4:fb147b0b417c - | | user: test - | | date: Thu Jan 01 00:00:00 1970 +0000 - | | summary: what is narf, pinky? - | | - o | changeset: 6:7c34953036d6 - |/ parent: 4:fb147b0b417c - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: narf! - | - | o changeset: 5:0469d521db49 - | | topic: fran - | | parent: 3:a53952faf762 - | | user: test - | | date: Thu Jan 01 00:00:00 1970 +0000 - | | summary: start on fran - | | - o | changeset: 4:fb147b0b417c - |/ user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: start on narf - | - $ cd ../brain - $ hg topics - * query - $ hg pull ../pinky -r narf - pulling from ../pinky - abort: unknown revision 'narf'! - [255] - $ hg pull ../pinky -r default - pulling from ../pinky - searching for changes - adding changesets - adding manifests - adding file changes - added 3 changesets with 3 changes to 1 files - (run 'hg update' to get a working copy) - $ hg topics - * query - -We can pull in the draft-phase change and we get the new topic - - $ hg pull ../pinky - pulling from ../pinky - searching for changes - adding changesets - adding manifests - adding file changes - added 1 changesets with 1 changes to 1 files (+1 heads) - (run 'hg heads' to see heads) - $ hg topics - fran - * query - $ hg log -Gr 'draft()' - o changeset: 9:0469d521db49 - | tag: tip - | topic: fran - | parent: 3:a53952faf762 - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: start on fran - | - -query is not an open topic, so when we clear the current topic it'll -disappear: - - $ hg topics --clear - $ hg topics - fran - ---clear when we don't have an active topic isn't an error: - - $ hg topics --clear - -Topic revset - $ hg log -r 'topic()' -G - o changeset: 9:0469d521db49 - | tag: tip - | topic: fran - | parent: 3:a53952faf762 - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: start on fran - | - $ hg log -r 'not topic()' -G - o changeset: 8:ae074045b7a7 - |\ parent: 7:54c943c1c167 - | | parent: 6:7c34953036d6 - | | user: test - | | date: Thu Jan 01 00:00:00 1970 +0000 - | | summary: Finish narf - | | - | o changeset: 7:54c943c1c167 - | | parent: 5:c01515cfc331 - | | user: test - | | date: Thu Jan 01 00:00:00 1970 +0000 - | | summary: Narf is like `zort` or `poit`! - | | - o | changeset: 6:7c34953036d6 - | | parent: 4:fb147b0b417c - | | user: test - | | date: Thu Jan 01 00:00:00 1970 +0000 - | | summary: narf! - | | - | @ changeset: 5:c01515cfc331 - |/ user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: what is narf, pinky? - | - o changeset: 4:fb147b0b417c - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: start on narf - | - o changeset: 3:a53952faf762 - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: Add file delta - | - o changeset: 2:15d1eb11d2fa - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: Add file gamma - | - o changeset: 1:c692ea2c9224 - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: Add file beta - | - o changeset: 0:c2b7d2f7d14b - user: test - date: Thu Jan 01 00:00:00 1970 +0000 - summary: Add file alpha - -No matches because narf is already closed: - $ hg log -r 'topic(narf)' -G -This regexp should match the topic `fran`: - $ hg log -r 'topic("re:.ra.")' -G - o changeset: 9:0469d521db49 - | tag: tip - | topic: fran - | parent: 3:a53952faf762 - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: start on fran - | -Exact match on fran: - $ hg log -r 'topic(fran)' -G - o changeset: 9:0469d521db49 - | tag: tip - | topic: fran - | parent: 3:a53952faf762 - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: start on fran - | - -Match current topic: - $ hg topic - fran - $ hg log -r 'topic(.)' -(no output is expected) - $ hg co fran - switching to topic fran - 2 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg log -r 'topic(.)' - changeset: 9:0469d521db49 - tag: tip - topic: fran - parent: 3:a53952faf762 - user: test - date: Thu Jan 01 00:00:00 1970 +0000 - summary: start on fran - - -Deactivate the topic. - $ hg topics - * fran - $ hg topics --clear - $ echo fran? >> beta - $ hg ci -m 'fran?' - created new head - $ hg log -Gr 'draft()' - @ changeset: 10:4073470c35e1 - | tag: tip - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: fran? - | - o changeset: 9:0469d521db49 - | topic: fran - | parent: 3:a53952faf762 - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: start on fran - | - $ hg topics - fran -Changing topic fails if we don't give a topic - $ hg topic --change 9 - abort: changing topic requires a topic name or --clear - [255] - -Can't change topic of a public change - $ hg topic --change 1:: --clear - abort: can't change topic of a public change - [255] - -Can clear topics - $ hg topic --change 9 --clear - changed topic on 1 changes - please run hg evolve --rev "not topic()" now - $ hg log -Gr 'draft() and not obsolete()' - o changeset: 11:783930e1d79e - | tag: tip - | parent: 3:a53952faf762 - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: start on fran - | - | @ changeset: 10:4073470c35e1 - | | user: test - | | date: Thu Jan 01 00:00:00 1970 +0000 - | | summary: fran? - | | - -Normally you'd do this with evolve, but we'll use rebase to avoid -bonus deps in the testsuite. - - $ hg rebase -d tip -s . - rebasing 10:4073470c35e1 "fran?" - -Can add a topic to an existing change - $ hg topic --change 11 wat - changed topic on 1 changes - please run hg evolve --rev "topic(wat)" now - $ hg log -Gr 'draft() and not obsolete()' - o changeset: 13:d91cd8fd490e - | tag: tip - | topic: wat - | parent: 3:a53952faf762 - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: start on fran - | - | @ changeset: 12:d9e32f4c4806 - | | user: test - | | date: Thu Jan 01 00:00:00 1970 +0000 - | | summary: fran? - | | - -Normally you'd do this with evolve, but we'll use rebase to avoid -bonus deps in the testsuite. - - $ hg rebase -d tip -s . - rebasing 12:d9e32f4c4806 "fran?" - - $ hg log -Gr 'draft()' - @ changeset: 14:cf24ad8bbef5 - | tag: tip - | topic: wat - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: fran? - | - o changeset: 13:d91cd8fd490e - | topic: wat - | parent: 3:a53952faf762 - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: start on fran - | - -Amend a topic - - $ hg topic watwat - $ hg ci --amend - $ hg log -Gr 'draft()' - @ changeset: 16:893ffcf66c1f - | tag: tip - | topic: watwat - | parent: 13:d91cd8fd490e - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: fran? - | - o changeset: 13:d91cd8fd490e - | topic: wat - | parent: 3:a53952faf762 - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: start on fran - | - -Clear and amend: - - $ hg topic --clear - $ hg ci --amend - $ hg log -r . - changeset: 18:a13639e22b65 - tag: tip - parent: 13:d91cd8fd490e - user: test - date: Thu Jan 01 00:00:00 1970 +0000 - summary: fran? - -Readding the same topic with topic --change should work: - $ hg topic --change . watwat - changed topic on 1 changes