# HG changeset patch # User Pierre-Yves David # Date 1499009318 -7200 # Node ID 167567795f6c4b8340f9b10439581ff042b797a5 # Parent 26ec0839865b1116417b0781a9063cf9ff453b71# Parent da0d3d4171cbdda1b94f7190477c5fae55be727c compat: merge with mercurial-4.0 diff -r 26ec0839865b -r 167567795f6c tests/test-check-setup-manifest.t --- a/tests/test-check-setup-manifest.t Sun Jul 02 17:28:15 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 26ec0839865b -r 167567795f6c tests/test-discovery-obshashrange.t --- a/tests/test-discovery-obshashrange.t Sun Jul 02 17:28:15 2017 +0200 +++ b/tests/test-discovery-obshashrange.t Sun Jul 02 17:28:38 2017 +0200 @@ -90,33 +90,27 @@ * @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 (*)> updated evo-ext-obscache in *.???? seconds (0r, 1o) (glob) * @0000000000000000000000000000000000000000 (*)> debugobsolete bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb 01241442b3c2bf3211e593b549c655ea65b295e3 --config experimental.obshashrange.max-revs=1 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, 2o) (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 (*)> updated evo-ext-obscache in *.???? seconds (0r, 1o) (glob) * @0000000000000000000000000000000000000000 (*)> debugobsolete dddddddddddddddddddddddddddddddddddddddd c8d03c1b5e94af74b772900c58259d2e08917735 --config experimental.obshashrange.warm-cache=0 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, 2o) (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 @@ -303,7 +297,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) @@ -316,7 +309,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) @@ -329,13 +321,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) @@ -385,17 +375,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) @@ -415,7 +402,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) @@ -494,7 +480,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 26ec0839865b -r 167567795f6c tests/test-evolve-cycles.t --- a/tests/test-evolve-cycles.t Sun Jul 02 17:28:15 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,427 +0,0 @@ -Test that evolve related algorithms don't crash on obs markers cycles - -Global setup -============ - - $ . $TESTDIR/testlib/common.sh - $ cat >> $HGRCPATH < [ui] - > interactive = true - > [phases] - > publish=False - > [extensions] - > evolve = - > EOF - -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 obslog "desc(A)" --hidden - @ 2a34000d3544 (1) A - | rewritten(description, parent, content) by test (*) as c473644ee0e9 (glob) - | - x a8df460dbbfe (3) C - | rewritten(description, parent, content) by test (*) as 2a34000d3544 (glob) - | - x c473644ee0e9 (2) B - | rewritten(description, parent, content) by test (*) as a8df460dbbfe (glob) - | - - $ hg obslog "desc(B)" --hidden - @ 2a34000d3544 (1) A - | rewritten(description, parent, content) by test (*) as c473644ee0e9 (glob) - | - x a8df460dbbfe (3) C - | rewritten(description, parent, content) by test (*) as 2a34000d3544 (glob) - | - x c473644ee0e9 (2) B - | rewritten(description, parent, content) by test (*) as a8df460dbbfe (glob) - | - - $ hg obslog "desc(C)" --hidden - @ 2a34000d3544 (1) A - | rewritten(description, parent, content) by test (*) as c473644ee0e9 (glob) - | - x a8df460dbbfe (3) C - | rewritten(description, parent, content) by test (*) as 2a34000d3544 (glob) - | - x c473644ee0e9 (2) B - | rewritten(description, parent, content) by test (*) as a8df460dbbfe (glob) - | - -Check that all option don't crash on a cycle either - - $ hg obslog "desc(C)" --hidden --all - @ 2a34000d3544 (1) A - | rewritten(description, parent, content) by test (*) as c473644ee0e9 (glob) - | - x a8df460dbbfe (3) C - | rewritten(description, parent, content) by test (*) as 2a34000d3544 (glob) - | - x c473644ee0e9 (2) B - | rewritten(description, parent, content) by test (*) 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 obslog "desc(D)" --hidden - x 0da815c333f6 (5) E - | rewritten(description, parent, content) by test (*) as d9f908fde1a1 (glob) - | - @ 868d2e0eb19c (4) D - |\ rewritten(description, parent, content) by test (*) as 0da815c333f6 (glob) - | | - | x d9f908fde1a1 (6) F - | | rewritten(description, parent, content) by test (*) as 868d2e0eb19c (glob) - | | - +---x 2a34000d3544 (1) A - | | rewritten(description, parent, content) by test (*) as c473644ee0e9 (glob) - | | - x | a8df460dbbfe (3) C - | | rewritten(description, parent, content) by test (*) as 2a34000d3544, 868d2e0eb19c (glob) - | | - x | c473644ee0e9 (2) B - | | rewritten(description, parent, content) by test (*) as a8df460dbbfe (glob) - | | -Check that all option don't crash either on a cycle - $ hg obslog --all --hidden "desc(F)" - x 0da815c333f6 (5) E - | rewritten(description, parent, content) by test (*) as d9f908fde1a1 (glob) - | - @ 868d2e0eb19c (4) D - |\ rewritten(description, parent, content) by test (*) as 0da815c333f6 (glob) - | | - | x d9f908fde1a1 (6) F - | | rewritten(description, parent, content) by test (*) as 868d2e0eb19c (glob) - | | - +---x 2a34000d3544 (1) A - | | rewritten(description, parent, content) by test (*) as c473644ee0e9 (glob) - | | - x | a8df460dbbfe (3) C - | | rewritten(description, parent, content) by test (*) as 2a34000d3544, 868d2e0eb19c (glob) - | | - x | c473644ee0e9 (2) B - | | rewritten(description, parent, content) by test (*) as a8df460dbbfe (glob) - | | -Check the json output is valid in this case - - $ hg obslog "desc(D)" --hidden --no-graph -Tjson | python -m json.tool - [ - { - "debugobshistory.markers": [ - { - "debugobshistory.effect": [ - "description", - "parent", - "content" - ], - "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.effect": [ - "description", - "parent", - "content" - ], - "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.effect": [ - "description", - "parent", - "content" - ], - "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.effect": [ - "description", - "parent", - "content" - ], - "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.effect": [ - "description", - "parent", - "content" - ], - "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.effect": [ - "description", - "parent", - "content" - ], - "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 26ec0839865b -r 167567795f6c tests/test-evolve-effectflags.t --- a/tests/test-evolve-effectflags.t Sun Jul 02 17:28:15 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,218 +0,0 @@ -Test the 'effect-flags' feature - -Global setup -============ - - $ . $TESTDIR/testlib/common.sh - $ cat >> $HGRCPATH < [ui] - > interactive = true - > [phases] - > publish=False - > [extensions] - > evolve = - > rebase = - > [experimental] - > evolution.effect-flags = 1 - > EOF - - $ hg init $TESTTMP/effect-flags - $ cd $TESTTMP/effect-flags - $ mkcommit ROOT - -amend touching the description only ------------------------------------ - - $ mkcommit A0 - $ hg amend -m "A1" - -check result - - $ hg debugobsolete --rev . - 471f378eab4c5e25f6c77f785b27c936efb22874 fdf9bde5129a28d4548fadd3f62b265cdd3b7a2e 0 (*) {'ef1': '1', 'user': 'test'} (glob) - $ hg obslog . - @ fdf9bde5129a (2) A1 - | - x 471f378eab4c (1) A0 - rewritten(description) by test (*) as fdf9bde5129a (glob) - - -amend touching the user only ----------------------------- - - $ mkcommit B0 - $ hg amend -u "bob " - -check result - - $ hg debugobsolete --rev . - ef4a313b1e0ade55718395d80e6b88c5ccd875eb 5485c92d34330dac9d7a63dc07e1e3373835b964 0 (*) {'ef1': '16', 'user': 'test'} (glob) - $ hg obslog . - @ 5485c92d3433 (4) B0 - | - x ef4a313b1e0a (3) B0 - rewritten(user) by test (*) as 5485c92d3433 (glob) - - -amend touching the date only ----------------------------- - - $ mkcommit B1 - $ hg amend -d "42 0" - -check result - - $ hg debugobsolete --rev . - 2ef0680ff45038ac28c9f1ff3644341f54487280 4dd84345082e9e5291c2e6b3f335bbf8bf389378 0 (*) {'ef1': '32', 'user': 'test'} (glob) - $ hg obslog . - @ 4dd84345082e (6) B1 - | - x 2ef0680ff450 (5) B1 - rewritten(date) by test (*) as 4dd84345082e (glob) - - -amend touching the branch only ----------------------------- - - $ mkcommit B2 - $ hg branch my-branch - marked working directory as branch my-branch - (branches are permanent and global, did you want a bookmark?) - $ hg amend - -check result - - $ hg debugobsolete --rev . - 4d1430a201c1ffbd8465dec75edd4a691a2d97ec 0 {bd3db8264ceebf1966319f5df3be7aac6acd1a8e} (*) {'ef1': '0', 'user': 'test'} (glob) - bd3db8264ceebf1966319f5df3be7aac6acd1a8e 14a01456e0574f0e0a0b15b2345486a6364a8d79 0 (*) {'ef1': '64', 'user': 'test'} (glob) - $ hg obslog . - @ 14a01456e057 (9) B2 - | - x bd3db8264cee (7) B2 - rewritten(branch) by test (*) as 14a01456e057 (glob) - - - $ hg up default - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - -rebase (parents change) ------------------------ - - $ mkcommit C0 - $ mkcommit D0 - $ hg rebase -r . -d 'desc(B0)' - rebasing 11:c85eff83a034 "D0" (tip) - -check result - - $ hg debugobsolete --rev . - c85eff83a0340efd9da52b806a94c350222f3371 da86aa2f19a30d6686b15cae15c7b6c908ec9699 0 (*) {'ef1': '4', 'user': 'test'} (glob) - $ hg obslog . - @ da86aa2f19a3 (12) D0 - | - x c85eff83a034 (11) D0 - rewritten(parent) by test (*) as da86aa2f19a3 (glob) - - -amend touching the diff ------------------------ - - $ mkcommit E0 - $ echo 42 >> E0 - $ hg amend - -check result - - $ hg debugobsolete --rev . - d6f4d8b8d3c8cde990f13915bced7f92ce1cc54f 0 {ebfe0333e0d96f68a917afd97c0a0af87f1c3b5f} (*) {'ef1': '0', 'user': 'test'} (glob) - ebfe0333e0d96f68a917afd97c0a0af87f1c3b5f 75781fdbdbf58a987516b00c980bccda1e9ae588 0 (*) {'ef1': '8', 'user': 'test'} (glob) - $ hg obslog . - @ 75781fdbdbf5 (15) E0 - | - x ebfe0333e0d9 (13) E0 - rewritten(content) by test (*) as 75781fdbdbf5 (glob) - - -amend with multiple effect (desc and meta) -------------------------------------------- - - $ mkcommit F0 - $ hg branch my-other-branch - marked working directory as branch my-other-branch - $ hg amend -m F1 -u "bob " -d "42 0" - -check result - - $ hg debugobsolete --rev . - 3b12912003b4e7aa6df6cded86255006c3c29d27 0 {fad47e5bd78e6aa4db1b5a0a1751bc12563655ff} (*) {'ef1': '0', 'user': 'test'} (glob) - fad47e5bd78e6aa4db1b5a0a1751bc12563655ff a94e0fd5f1c81d969381a76eb0d37ce499a44fae 0 (*) {'ef1': '113', 'user': 'test'} (glob) - $ hg obslog . - @ a94e0fd5f1c8 (18) F1 - | - x fad47e5bd78e (16) F0 - rewritten(description, user, date, branch) by test (*) as a94e0fd5f1c8 (glob) - -rebase not touching the diff ----------------------------- - - $ cat << EOF > H0 - > 0 - > 1 - > 2 - > 3 - > 4 - > 5 - > 6 - > 7 - > 8 - > 9 - > 10 - > EOF - $ hg add H0 - $ hg commit -m 'H0' - $ echo "H1" >> H0 - $ hg commit -m "H1" - $ hg up -r "desc(H0)" - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ cat << EOF > H0 - > H2 - > 0 - > 1 - > 2 - > 3 - > 4 - > 5 - > 6 - > 7 - > 8 - > 9 - > 10 - > EOF - $ hg commit -m "H2" - created new head - $ hg rebase -s "desc(H1)" -d "desc(H2)" -t :merge3 - rebasing 20:b57fed8d8322 "H1" - merging H0 - $ hg obslog tip - o e509e2eb3df5 (22) H1 - | - x b57fed8d8322 (20) H1 - rewritten(parent) by test (*) as e509e2eb3df5 (glob) - -amend closing the branch should be detected as meta change ----------------------------------------------------------- - - $ hg branch closedbranch - marked working directory as branch closedbranch - $ mkcommit G0 - $ mkcommit I0 - $ hg commit --amend --close-branch - -check result - - $ hg obslog . - @ 12c6238b5e37 (26) I0 - | - x 2f599e54c1c6 (24) I0 - rewritten(meta) by test (*) as 12c6238b5e37 (glob) - diff -r 26ec0839865b -r 167567795f6c tests/test-evolve-obshistory-complex.t --- a/tests/test-evolve-obshistory-complex.t Sun Jul 02 17:28:15 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,419 +0,0 @@ -Global setup -============ - - $ . $TESTDIR/testlib/common.sh - $ cat >> $HGRCPATH < [ui] - > interactive = true - > [phases] - > publish=False - > [extensions] - > evolve = - > EOF - -Test obslog with split + fold + split -===================================== - -Test setup ----------- - - $ hg init $TESTTMP/splitfoldsplit - $ cd $TESTTMP/splitfoldsplit - $ 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 - -Split commits two by two ------------------------- - - $ hg fold --exact -r 1 -r 2 --date "0 0" -m "fold0" - 2 changesets folded - 4 new unstable changesets - $ hg fold --exact -r 3 -r 4 --date "0 0" -m "fold1" - 2 changesets folded - $ hg fold --exact -r 5 -r 6 --date "0 0" -m "fold2" - 2 changesets folded - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg log -G - @ changeset: 9:100cc25b765f - | tag: tip - | parent: 4:868d2e0eb19c - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: fold2 - | - | o changeset: 8:d15d0ffc75f6 - | | parent: 2:c473644ee0e9 - | | user: test - | | date: Thu Jan 01 00:00:00 1970 +0000 - | | summary: fold1 - | | - | | o changeset: 7:b868bc49b0a4 - | | | parent: 0:ea207398892e - | | | user: test - | | | date: Thu Jan 01 00:00:00 1970 +0000 - | | | summary: fold0 - | | | - x | | 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 - - -Then split ----------- - - $ hg split "desc(fold0)" -d "0 0" << EOF - > Y - > Y - > N - > N - > Y - > Y - > EOF - 0 files updated, 0 files merged, 6 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 @@ - +A - 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 @@ - +B - record this change to 'B'? [Ynesfdaq?] Y - - no more change to split - $ hg split "desc(fold1)" -d "0 0" << EOF - > Y - > Y - > N - > N - > Y - > Y - > EOF - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved - adding C - adding D - diff --git a/C b/C - new file mode 100644 - examine changes to 'C'? [Ynesfdaq?] Y - - @@ -0,0 +1,1 @@ - +C - record change 1/2 to 'C'? [Ynesfdaq?] Y - - 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/D b/D - new file mode 100644 - examine changes to 'D'? [Ynesfdaq?] Y - - @@ -0,0 +1,1 @@ - +D - record this change to 'D'? [Ynesfdaq?] Y - - no more change to split - $ hg split "desc(fold2)" -d "0 0" << EOF - > Y - > Y - > N - > N - > Y - > Y - > EOF - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved - adding E - adding F - diff --git a/E b/E - new file mode 100644 - examine changes to 'E'? [Ynesfdaq?] Y - - @@ -0,0 +1,1 @@ - +E - record change 1/2 to 'E'? [Ynesfdaq?] Y - - diff --git a/F b/F - new file mode 100644 - examine changes to 'F'? [Ynesfdaq?] N - - created new head - Done splitting? [yN] N - diff --git a/F b/F - new file mode 100644 - examine changes to 'F'? [Ynesfdaq?] Y - - @@ -0,0 +1,1 @@ - +F - record this change to 'F'? [Ynesfdaq?] Y - - no more change to split - $ hg log -G - @ changeset: 15:d4a000f63ee9 - | tag: tip - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: fold2 - | - o changeset: 14:ec31316faa9d - | parent: 4:868d2e0eb19c - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: fold2 - | - | o changeset: 13:d0f33db50670 - | | user: test - | | date: Thu Jan 01 00:00:00 1970 +0000 - | | summary: fold1 - | | - | o changeset: 12:7b3290f6e0a0 - | | parent: 2:c473644ee0e9 - | | user: test - | | date: Thu Jan 01 00:00:00 1970 +0000 - | | summary: fold1 - | | - | | o changeset: 11:e036916b63ea - | | | user: test - | | | date: Thu Jan 01 00:00:00 1970 +0000 - | | | summary: fold0 - | | | - | | o changeset: 10:19e14c8397fc - | | | parent: 0:ea207398892e - | | | user: test - | | | date: Thu Jan 01 00:00:00 1970 +0000 - | | | summary: fold0 - | | | - x | | 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 - - -Connect them all ----------------- - - $ hg prune -s 12 -r 11 - 1 changesets pruned - $ hg prune -s 14 -r 13 - 1 changesets pruned - $ hg log -G - @ changeset: 15:d4a000f63ee9 - | tag: tip - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: fold2 - | - o changeset: 14:ec31316faa9d - | parent: 4:868d2e0eb19c - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: fold2 - | - | o changeset: 12:7b3290f6e0a0 - | | parent: 2:c473644ee0e9 - | | user: test - | | date: Thu Jan 01 00:00:00 1970 +0000 - | | summary: fold1 - | | - | | o changeset: 10:19e14c8397fc - | | | parent: 0:ea207398892e - | | | user: test - | | | date: Thu Jan 01 00:00:00 1970 +0000 - | | | summary: fold0 - | | | - x | | 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 -=========== - -Obslog should show a subset of the obs history, this test check that the -walking algorithm works no matter the level of successors + precursors - - $ hg obslog 12 - o 7b3290f6e0a0 (12) fold1 - |\ - x | d15d0ffc75f6 (8) fold1 - |\ \ rewritten(parent, content) by test (*) as 7b3290f6e0a0, d0f33db50670 (glob) - | | | - | | x e036916b63ea (11) fold0 - | | | rewritten(description, parent, content) by test (*) as 7b3290f6e0a0 (glob) - | | | - x | | 868d2e0eb19c (4) D - / / rewritten(description, parent, content) by test (*) as d15d0ffc75f6 (glob) - | | - x | a8df460dbbfe (3) C - / rewritten(description, content) by test (*) as d15d0ffc75f6 (glob) - | - x b868bc49b0a4 (7) fold0 - |\ rewritten(parent, content) by test (*) as 19e14c8397fc, e036916b63ea (glob) - | | - x | 2a34000d3544 (1) A - / rewritten(description, content) by test (*) as b868bc49b0a4 (glob) - | - x c473644ee0e9 (2) B - rewritten(description, parent, content) by test (*) as b868bc49b0a4 (glob) - -While with all option, we should see 15 changesets - - $ hg obslog --all 15 - o 19e14c8397fc (10) fold0 - | - | o 7b3290f6e0a0 (12) fold1 - | |\ - | | | @ d4a000f63ee9 (15) fold2 - | | | | - | | | | o ec31316faa9d (14) fold2 - | | | |/| - | | | x | 100cc25b765f (9) fold2 - | | | |\ \ rewritten(parent, content) by test (*) as d4a000f63ee9, ec31316faa9d (glob) - | | | | | | - | +-------x d0f33db50670 (13) fold1 - | | | | | rewritten(description, parent, content) by test (*) as ec31316faa9d (glob) - | | | | | - +---x | | e036916b63ea (11) fold0 - | | / / rewritten(description, parent, content) by test (*) as 7b3290f6e0a0 (glob) - | | | | - | | x | 0da815c333f6 (5) E - | | / rewritten(description, content) by test (*) as 100cc25b765f (glob) - | | | - x | | b868bc49b0a4 (7) fold0 - |\ \ \ rewritten(parent, content) by test (*) as 19e14c8397fc, e036916b63ea (glob) - | | | | - | | x | d15d0ffc75f6 (8) fold1 - | | |\ \ rewritten(parent, content) by test (*) as 7b3290f6e0a0, d0f33db50670 (glob) - | | | | | - | | | | x d9f908fde1a1 (6) F - | | | | rewritten(description, parent, content) by test (*) as 100cc25b765f (glob) - | | | | - x | | | 2a34000d3544 (1) A - / / / rewritten(description, content) by test (*) as b868bc49b0a4 (glob) - | | | - | x | 868d2e0eb19c (4) D - | / rewritten(description, parent, content) by test (*) as d15d0ffc75f6 (glob) - | | - | x a8df460dbbfe (3) C - | rewritten(description, content) by test (*) as d15d0ffc75f6 (glob) - | - x c473644ee0e9 (2) B - rewritten(description, parent, content) by test (*) as b868bc49b0a4 (glob) - diff -r 26ec0839865b -r 167567795f6c tests/test-evolve-obshistory.t --- a/tests/test-evolve-obshistory.t Sun Jul 02 17:28:15 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1615 +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 = - > [experimental] - > evolution.effect-flags = yes - > 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 obslog --patch 4ae3a4151de9 - @ 4ae3a4151de9 (3) A1 - | - x 471f378eab4c (1) A0 - rewritten(description, content) by test (*) as 4ae3a4151de9 (glob) - --- a/471f378eab4c-changeset-description - +++ b/4ae3a4151de9-changeset-description - @@ -1,1 +1,3 @@ - -A0 - +A1 - + - +Better commit message - - diff -r 471f378eab4c -r 4ae3a4151de9 A0 - --- a/A0 Thu Jan 01 00:00:00 1970 +0000 - +++ b/A0 Thu Jan 01 00:00:00 1970 +0000 - @@ -1,1 +1,2 @@ - A0 - +42 - - - $ hg obslog 4ae3a4151de9 --no-graph -Tjson | python -m json.tool - [ - { - "debugobshistory.markers": [], - "debugobshistory.node": "4ae3a4151de9", - "debugobshistory.rev": 3, - "debugobshistory.shortdescription": "A1" - }, - { - "debugobshistory.markers": [ - { - "debugobshistory.effect": [ - "description", - "content" - ], - "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 obslog --hidden --patch 471f378eab4c - x 471f378eab4c (1) A0 - rewritten(description, content) by test (*) as 4ae3a4151de9 (glob) - --- a/471f378eab4c-changeset-description - +++ b/4ae3a4151de9-changeset-description - @@ -1,1 +1,3 @@ - -A0 - +A1 - + - +Better commit message - - diff -r 471f378eab4c -r 4ae3a4151de9 A0 - --- a/A0 Thu Jan 01 00:00:00 1970 +0000 - +++ b/A0 Thu Jan 01 00:00:00 1970 +0000 - @@ -1,1 +1,2 @@ - A0 - +42 - - - $ hg obslog --hidden 471f378eab4c --no-graph -Tjson | python -m json.tool - [ - { - "debugobshistory.markers": [ - { - "debugobshistory.effect": [ - *, (glob) - "content" - ], - "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 obslog 'desc(B0)' --hidden --patch - x 0dec01379d3b (2) B0 - pruned by test (*) (glob) - (No patch available yet, no successors) - - $ hg obslog '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 obslog 'desc(A0)' --patch - @ 471f378eab4c (1) A0 - - $ hg obslog '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 obslog 471597cad322 --hidden --patch - x 471597cad322 (1) A0 - rewritten(parent, content) by test (*) as 337fec4d2edc, f257fde29c7a (glob) - (No patch available yet, too many successors (2)) - - $ hg obslog 471597cad322 --hidden --no-graph -Tjson | python -m json.tool - [ - { - "debugobshistory.markers": [ - { - "debugobshistory.effect": [ - "parent", - "content" - ], - "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 obslog 337fec4d2edc --patch - o 337fec4d2edc (2) A0 - | - x 471597cad322 (1) A0 - rewritten(parent, content) by test (*) as 337fec4d2edc, f257fde29c7a (glob) - (No patch available yet, too many successors (2)) - -With the all option, it should show the three changesets - $ hg obslog --all 337fec4d2edc --patch - o 337fec4d2edc (2) A0 - | - | @ f257fde29c7a (3) A0 - |/ - x 471597cad322 (1) A0 - rewritten(parent, content) by test (*) as 337fec4d2edc, f257fde29c7a (glob) - (No patch available yet, too many successors (2)) - -Check that debugobshistory on the second successor after split show -the revision plus the splitted one - $ hg obslog f257fde29c7a --patch - @ f257fde29c7a (3) A0 - | - x 471597cad322 (1) A0 - rewritten(parent, content) by test (*) as 337fec4d2edc, f257fde29c7a (glob) - (No patch available yet, too many successors (2)) - -With the all option, it should show the three changesets - $ hg obslog f257fde29c7a --all --patch - o 337fec4d2edc (2) A0 - | - | @ f257fde29c7a (3) A0 - |/ - x 471597cad322 (1) A0 - rewritten(parent, content) by test (*) as 337fec4d2edc, f257fde29c7a (glob) - (No patch available yet, too many successors (2)) - -Obslog with all option all should also works on the splitted commit - $ hg obslog -a 471597cad322 --hidden --patch - o 337fec4d2edc (2) A0 - | - | @ f257fde29c7a (3) A0 - |/ - x 471597cad322 (1) A0 - rewritten(parent, content) by test (*) as 337fec4d2edc, f257fde29c7a (glob) - (No patch available yet, too many successors (2)) - -Check that debugobshistory on both successors after split show -a coherent graph - $ hg obslog 'f257fde29c7a+337fec4d2edc' --patch - o 337fec4d2edc (2) A0 - | - | @ f257fde29c7a (3) A0 - |/ - x 471597cad322 (1) A0 - rewritten(parent, content) by test (*) as 337fec4d2edc, f257fde29c7a (glob) - (No patch available yet, too many successors (2)) - - $ 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 obslog de7290d8b885 --hidden --patch - x de7290d8b885 (1) A0 - rewritten(parent, content) by test (*) as 1ae8bc733a14, 337fec4d2edc, c7f044602e9b, f257fde29c7a (glob) - (No patch available yet, too many successors (4)) - - $ hg obslog de7290d8b885 --hidden --all --patch - o 1ae8bc733a14 (4) A0 - | - | o 337fec4d2edc (2) A0 - |/ - | @ c7f044602e9b (5) A0 - |/ - | o f257fde29c7a (3) A0 - |/ - x de7290d8b885 (1) A0 - rewritten(parent, content) by test (*) as 1ae8bc733a14, 337fec4d2edc, c7f044602e9b, f257fde29c7a (glob) - (No patch available yet, too many successors (4)) - - $ hg obslog de7290d8b885 --hidden --no-graph -Tjson | python -m json.tool - [ - { - "debugobshistory.markers": [ - { - "debugobshistory.effect": [ - "parent", - "content" - ], - "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 obslog c7f044602e9b --patch - @ c7f044602e9b (5) A0 - | - x de7290d8b885 (1) A0 - rewritten(parent, content) by test (*) as 1ae8bc733a14, 337fec4d2edc, c7f044602e9b, f257fde29c7a (glob) - (No patch available yet, too many successors (4)) - - $ hg obslog c7f044602e9b --no-graph -Tjson | python -m json.tool - [ - { - "debugobshistory.markers": [], - "debugobshistory.node": "c7f044602e9b", - "debugobshistory.rev": 5, - "debugobshistory.shortdescription": "A0" - }, - { - "debugobshistory.markers": [ - { - "debugobshistory.effect": [ - "parent", - "content" - ], - "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 obslog 2::5 --patch - o 1ae8bc733a14 (4) A0 - | - | o 337fec4d2edc (2) A0 - |/ - | @ c7f044602e9b (5) A0 - |/ - | o f257fde29c7a (3) A0 - |/ - x de7290d8b885 (1) A0 - rewritten(parent, content) by test (*) as 1ae8bc733a14, 337fec4d2edc, c7f044602e9b, f257fde29c7a (glob) - (No patch available yet, too many successors (4)) - - $ hg obslog 5 --all --patch - o 1ae8bc733a14 (4) A0 - | - | o 337fec4d2edc (2) A0 - |/ - | @ c7f044602e9b (5) A0 - |/ - | o f257fde29c7a (3) A0 - |/ - x de7290d8b885 (1) A0 - rewritten(parent, content) by test (*) as 1ae8bc733a14, 337fec4d2edc, c7f044602e9b, f257fde29c7a (glob) - (No patch available yet, too many successors (4)) - - $ 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 obslog --hidden 471f378eab4c --patch - x 471f378eab4c (1) A0 - rewritten(description, content) by test (*) as eb5a0daa2192 (glob) - --- a/471f378eab4c-changeset-description - +++ b/eb5a0daa2192-changeset-description - @@ -1,1 +1,1 @@ - -A0 - +C0 - - diff -r 471f378eab4c -r eb5a0daa2192 B0 - --- /dev/null Thu Jan 01 00:00:00 1970 +0000 - +++ b/B0 Thu Jan 01 00:00:00 1970 +0000 - @@ -0,0 +1,1 @@ - +B0 - - -Check that with all option, all changesets are shown - $ hg obslog --hidden --all 471f378eab4c --patch - @ eb5a0daa2192 (3) C0 - |\ - x | 0dec01379d3b (2) B0 - / rewritten(description, parent, content) by test (*) as eb5a0daa2192 (glob) - | (No patch available yet, changesets rebased) - | - x 471f378eab4c (1) A0 - rewritten(description, content) by test (*) as eb5a0daa2192 (glob) - --- a/471f378eab4c-changeset-description - +++ b/eb5a0daa2192-changeset-description - @@ -1,1 +1,1 @@ - -A0 - +C0 - - diff -r 471f378eab4c -r eb5a0daa2192 B0 - --- /dev/null Thu Jan 01 00:00:00 1970 +0000 - +++ b/B0 Thu Jan 01 00:00:00 1970 +0000 - @@ -0,0 +1,1 @@ - +B0 - - -Check that debugobshistory on the second folded revision show only -the revision with the target - $ hg obslog --hidden 0dec01379d3b --patch - x 0dec01379d3b (2) B0 - rewritten(description, parent, content) by test (*) as eb5a0daa2192 (glob) - (No patch available yet, changesets rebased) - -Check that with all option, all changesets are shown - $ hg obslog --hidden --all 0dec01379d3b --patch - @ eb5a0daa2192 (3) C0 - |\ - x | 0dec01379d3b (2) B0 - / rewritten(description, parent, content) by test (*) as eb5a0daa2192 (glob) - | (No patch available yet, changesets rebased) - | - x 471f378eab4c (1) A0 - rewritten(description, content) by test (*) as eb5a0daa2192 (glob) - --- a/471f378eab4c-changeset-description - +++ b/eb5a0daa2192-changeset-description - @@ -1,1 +1,1 @@ - -A0 - +C0 - - diff -r 471f378eab4c -r eb5a0daa2192 B0 - --- /dev/null Thu Jan 01 00:00:00 1970 +0000 - +++ b/B0 Thu Jan 01 00:00:00 1970 +0000 - @@ -0,0 +1,1 @@ - +B0 - - -Check that debugobshistory on the successor revision show a coherent -graph - $ hg obslog eb5a0daa2192 --patch - @ eb5a0daa2192 (3) C0 - |\ - x | 0dec01379d3b (2) B0 - / rewritten(description, parent, content) by test (*) as eb5a0daa2192 (glob) - | (No patch available yet, changesets rebased) - | - x 471f378eab4c (1) A0 - rewritten(description, content) by test (*) as eb5a0daa2192 (glob) - --- a/471f378eab4c-changeset-description - +++ b/eb5a0daa2192-changeset-description - @@ -1,1 +1,1 @@ - -A0 - +C0 - - diff -r 471f378eab4c -r eb5a0daa2192 B0 - --- /dev/null Thu Jan 01 00:00:00 1970 +0000 - +++ b/B0 Thu Jan 01 00:00:00 1970 +0000 - @@ -0,0 +1,1 @@ - +B0 - - - $ hg obslog eb5a0daa2192 --no-graph -Tjson | python -m json.tool - [ - { - "debugobshistory.markers": [], - "debugobshistory.node": "eb5a0daa2192", - "debugobshistory.rev": 3, - "debugobshistory.shortdescription": "C0" - }, - { - "debugobshistory.markers": [ - { - "debugobshistory.effect": [ - "description", - "content" - ], - "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.effect": [ - "description", - "parent", - "content" - ], - "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 obslog --hidden 471f378eab4c --patch - x 471f378eab4c (1) A0 - rewritten(description) by test (*) as 65b757b745b9 (glob) - --- a/471f378eab4c-changeset-description - +++ b/65b757b745b9-changeset-description - @@ -1,1 +1,1 @@ - -A0 - +A2 - - rewritten(description) by test (*) as fdf9bde5129a (glob) - --- a/471f378eab4c-changeset-description - +++ b/fdf9bde5129a-changeset-description - @@ -1,1 +1,1 @@ - -A0 - +A1 - - - -Check that with all option, every changeset is shown - $ hg obslog --hidden --all 471f378eab4c --patch - @ 65b757b745b9 (3) A2 - | - | o fdf9bde5129a (2) A1 - |/ - x 471f378eab4c (1) A0 - rewritten(description) by test (*) as 65b757b745b9 (glob) - --- a/471f378eab4c-changeset-description - +++ b/65b757b745b9-changeset-description - @@ -1,1 +1,1 @@ - -A0 - +A2 - - rewritten(description) by test (*) as fdf9bde5129a (glob) - --- a/471f378eab4c-changeset-description - +++ b/fdf9bde5129a-changeset-description - @@ -1,1 +1,1 @@ - -A0 - +A1 - - - $ hg obslog --hidden 471f378eab4c --no-graph -Tjson | python -m json.tool - [ - { - "debugobshistory.markers": [ - { - "debugobshistory.effect": [ - "description" - ], - "debugobshistory.marker_date": [ - *, (glob) - 0 (glob) - ], - "debugobshistory.marker_user": "test", - "debugobshistory.succnodes": [ - "65b757b745b9" - ], - "debugobshistory.verb": "rewritten" - }, - { - "debugobshistory.effect": [ - "description" - ], - "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 obslog fdf9bde5129a --patch - o fdf9bde5129a (2) A1 - | - x 471f378eab4c (1) A0 - rewritten(description) by test (*) as 65b757b745b9 (glob) - --- a/471f378eab4c-changeset-description - +++ b/65b757b745b9-changeset-description - @@ -1,1 +1,1 @@ - -A0 - +A2 - - rewritten(description) by test (*) as fdf9bde5129a (glob) - --- a/471f378eab4c-changeset-description - +++ b/fdf9bde5129a-changeset-description - @@ -1,1 +1,1 @@ - -A0 - +A1 - - - -Check that all option show all of them - $ hg obslog fdf9bde5129a -a --patch - @ 65b757b745b9 (3) A2 - | - | o fdf9bde5129a (2) A1 - |/ - x 471f378eab4c (1) A0 - rewritten(description) by test (*) as 65b757b745b9 (glob) - --- a/471f378eab4c-changeset-description - +++ b/65b757b745b9-changeset-description - @@ -1,1 +1,1 @@ - -A0 - +A2 - - rewritten(description) by test (*) as fdf9bde5129a (glob) - --- a/471f378eab4c-changeset-description - +++ b/fdf9bde5129a-changeset-description - @@ -1,1 +1,1 @@ - -A0 - +A1 - - -Check that debugobshistory on the second diverged revision show the revision -and the diverent one - $ hg obslog 65b757b745b9 --patch - @ 65b757b745b9 (3) A2 - | - x 471f378eab4c (1) A0 - rewritten(description) by test (*) as 65b757b745b9 (glob) - --- a/471f378eab4c-changeset-description - +++ b/65b757b745b9-changeset-description - @@ -1,1 +1,1 @@ - -A0 - +A2 - - rewritten(description) by test (*) as fdf9bde5129a (glob) - --- a/471f378eab4c-changeset-description - +++ b/fdf9bde5129a-changeset-description - @@ -1,1 +1,1 @@ - -A0 - +A1 - - -Check that all option show all of them - $ hg obslog 65b757b745b9 -a --patch - @ 65b757b745b9 (3) A2 - | - | o fdf9bde5129a (2) A1 - |/ - x 471f378eab4c (1) A0 - rewritten(description) by test (*) as 65b757b745b9 (glob) - --- a/471f378eab4c-changeset-description - +++ b/65b757b745b9-changeset-description - @@ -1,1 +1,1 @@ - -A0 - +A2 - - rewritten(description) by test (*) as fdf9bde5129a (glob) - --- a/471f378eab4c-changeset-description - +++ b/fdf9bde5129a-changeset-description - @@ -1,1 +1,1 @@ - -A0 - +A1 - - -Check that debugobshistory on the both diverged revision show a coherent -graph - $ hg obslog '65b757b745b9+fdf9bde5129a' --patch - @ 65b757b745b9 (3) A2 - | - | o fdf9bde5129a (2) A1 - |/ - x 471f378eab4c (1) A0 - rewritten(description) by test (*) as 65b757b745b9 (glob) - --- a/471f378eab4c-changeset-description - +++ b/65b757b745b9-changeset-description - @@ -1,1 +1,1 @@ - -A0 - +A2 - - rewritten(description) by test (*) as fdf9bde5129a (glob) - --- a/471f378eab4c-changeset-description - +++ b/fdf9bde5129a-changeset-description - @@ -1,1 +1,1 @@ - -A0 - +A1 - - - $ hg obslog '65b757b745b9+fdf9bde5129a' --no-graph -Tjson | python -m json.tool - [ - { - "debugobshistory.markers": [], - "debugobshistory.node": "65b757b745b9", - "debugobshistory.rev": 3, - "debugobshistory.shortdescription": "A2" - }, - { - "debugobshistory.markers": [ - { - "debugobshistory.effect": [ - "description" - ], - "debugobshistory.marker_date": [ - *, (glob) - 0 (glob) - ], - "debugobshistory.marker_user": "test", - "debugobshistory.succnodes": [ - "65b757b745b9" - ], - "debugobshistory.verb": "rewritten" - }, - { - "debugobshistory.effect": [ - "description" - ], - "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 obslog eb5a0daa2192 --patch - @ eb5a0daa2192 (4) C0 - |\ - x | 471f378eab4c (1) A0 - / rewritten(description, content) by test (*) as eb5a0daa2192 (glob) - | --- a/471f378eab4c-changeset-description - | +++ b/eb5a0daa2192-changeset-description - | @@ -1,1 +1,1 @@ - | -A0 - | +C0 - | - | diff -r 471f378eab4c -r eb5a0daa2192 B0 - | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 - | +++ b/B0 Thu Jan 01 00:00:00 1970 +0000 - | @@ -0,0 +1,1 @@ - | +B0 - | - | - x b7ea6d14e664 (3) B1 - | rewritten(description, parent, content) by test (*) as eb5a0daa2192 (glob) - | (No patch available yet, changesets rebased) - | - x 0dec01379d3b (2) B0 - rewritten(description) by test (*) as b7ea6d14e664 (glob) - --- a/0dec01379d3b-changeset-description - +++ b/b7ea6d14e664-changeset-description - @@ -1,1 +1,1 @@ - -B0 - +B1 - - -Check that obslog on ROOT with all option show everything - $ hg obslog 1 --hidden --all --patch - @ eb5a0daa2192 (4) C0 - |\ - x | 471f378eab4c (1) A0 - / rewritten(description, content) by test (*) as eb5a0daa2192 (glob) - | --- a/471f378eab4c-changeset-description - | +++ b/eb5a0daa2192-changeset-description - | @@ -1,1 +1,1 @@ - | -A0 - | +C0 - | - | diff -r 471f378eab4c -r eb5a0daa2192 B0 - | --- /dev/null Thu Jan 01 00:00:00 1970 +0000 - | +++ b/B0 Thu Jan 01 00:00:00 1970 +0000 - | @@ -0,0 +1,1 @@ - | +B0 - | - | - x b7ea6d14e664 (3) B1 - | rewritten(description, parent, content) by test (*) as eb5a0daa2192 (glob) - | (No patch available yet, changesets rebased) - | - x 0dec01379d3b (2) B0 - rewritten(description) by test (*) as b7ea6d14e664 (glob) - --- a/0dec01379d3b-changeset-description - +++ b/b7ea6d14e664-changeset-description - @@ -1,1 +1,1 @@ - -B0 - +B1 - - - $ hg obslog eb5a0daa2192 --no-graph -Tjson | python -m json.tool - [ - { - "debugobshistory.markers": [], - "debugobshistory.node": "eb5a0daa2192", - "debugobshistory.rev": 4, - "debugobshistory.shortdescription": "C0" - }, - { - "debugobshistory.markers": [ - { - "debugobshistory.effect": [ - *, (glob) - *, (glob) - "content" - ], - "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.effect": [ - "description" - ], - "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.effect": [ - "description", - "content" - ], - "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 obslog 7a230b46bf61 --patch - @ 7a230b46bf61 (3) A2 - | - x fdf9bde5129a (2) A1 - | rewritten(description) by test (*) as 7a230b46bf61 (glob) - | --- a/fdf9bde5129a-changeset-description - | +++ b/7a230b46bf61-changeset-description - | @@ -1,1 +1,1 @@ - | -A1 - | +A2 - | - | - x 471f378eab4c (1) A0 - rewritten(description) by test (*) as fdf9bde5129a (glob) - --- a/471f378eab4c-changeset-description - +++ b/fdf9bde5129a-changeset-description - @@ -1,1 +1,1 @@ - -A0 - +A1 - - - $ 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 obslog 7a230b46bf61 --patch - o 7a230b46bf61 (2) A2 - | - x fdf9bde5129a - | rewritten(description) by test (*) as 7a230b46bf61 (glob) - | (No patch available yet, context is not local) - | - @ 471f378eab4c (1) A0 - rewritten(description) by test (*) as fdf9bde5129a (glob) - (No patch available yet, succ is unknown locally) - - $ hg obslog 7a230b46bf61 --color=debug --patch - o [evolve.node|7a230b46bf61] [evolve.rev|(2)] [evolve.short_description|A2] - | - x [evolve.node evolve.missing_change_ctx|fdf9bde5129a] - | [evolve.verb|rewritten](description) by [evolve.user|test] [evolve.date|(*)] as [evolve.node|7a230b46bf61] (glob) - | (No patch available yet, context is not local) - | - @ [evolve.node|471f378eab4c] [evolve.rev|(1)] [evolve.short_description|A0] - [evolve.verb|rewritten](description) by [evolve.user|test] [evolve.date|(*)] as [evolve.node|fdf9bde5129a] (glob) - (No patch available yet, succ is unknown locally) - diff -r 26ec0839865b -r 167567795f6c tests/test-evolve-serveronly.t --- a/tests/test-evolve-serveronly.t Sun Jul 02 17:28:15 2017 +0200 +++ b/tests/test-evolve-serveronly.t Sun Jul 02 17:28:38 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 26ec0839865b -r 167567795f6c tests/test-evolve-templates.t --- a/tests/test-evolve-templates.t Sun Jul 02 17:28:15 2017 +0200 +++ b/tests/test-evolve-templates.t Sun Jul 02 17:28:38 2017 +0200 @@ -69,15 +69,6 @@ (use 'hg evolve' to update to its successor: d004c8f274b9) Precursors template should show current revision as it is the working copy - $ hg olog tip - o d004c8f274b9 (4) A2 - | - x a468dc9b3633 (3) A1 - | rewritten(description) by test2 (*) as d004c8f274b9 (glob) - | - @ 471f378eab4c (1) A0 - rewritten(description, content) by test1 (*) as a468dc9b3633 (glob) - $ hg tlog o d004c8f274b9 | Precursors: 471f378eab4c diff -r 26ec0839865b -r 167567795f6c tests/test-evolve-topic.t --- a/tests/test-evolve-topic.t Sun Jul 02 17:28:15 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 26ec0839865b -r 167567795f6c tests/test-evolve.t --- a/tests/test-evolve.t Sun Jul 02 17:28:15 2017 +0200 +++ b/tests/test-evolve.t Sun Jul 02 17:28:38 2017 +0200 @@ -768,20 +768,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(description, user, parent, content) by test (*) as d26d339c513f (glob) - | | | - | \ \ - | |\ \ - | | | x ce341209337f (4) add 4 - | | | rewritten(description, user, content) by test (*) as d26d339c513f (glob) - | | | - Test obsstore stat $ hg debugobsstorestat @@ -1168,7 +1154,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' @@ -1194,7 +1180,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 <> $HGRCPATH - > [ui] - > logtemplate = {rev} {branch} \{{get(namespaces, "topics")}} {phase} {desc|firstline}\n - > [experimental] - > evolution=createmarkers,exchange,allowunstable - > EOF - - $ hg init main - $ cd main - $ hg branch other - marked working directory as branch other - (branches are permanent and global, did you want a bookmark?) - $ echo aaa > aaa - $ hg add aaa - $ hg commit -m c_a - $ echo aaa > bbb - $ hg add bbb - $ hg commit -m c_b - $ hg branch foo - marked working directory as branch 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 foo {} draft c_f - | - o 4 foo {} draft c_e - | - o 3 foo {} draft c_d - | - o 2 foo {} draft c_c - | - o 1 other {} draft c_b - | - o 0 other {} draft c_a - - -Check that topic without any parent does not crash --list ---------------------------------------------------------- - - $ hg up other - 0 files updated, 0 files merged, 4 files removed, 0 files unresolved - $ hg stack - ### branch: other - b2@ c_b (current) - b1: c_a - $ hg phase --public 'branch("other")' - $ hg up foo - 4 files updated, 0 files merged, 0 files removed, 0 files unresolved - -Simple test ------------ - -'hg stack' list all changeset in the topic - - $ hg branch - foo - $ hg stack - ### branch: foo - b4@ c_f (current) - b3: c_e - b2: c_d - b1: c_c - ^ c_b - -Test "t#" reference -------------------- - - $ hg up b2 - 0 files updated, 0 files merged, 2 files removed, 0 files unresolved - $ hg up foo - 2 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg up b42 - abort: cannot resolve "b42": branch "foo" has only 4 changesets - [255] - $ hg up b2 - 0 files updated, 0 files merged, 2 files removed, 0 files unresolved - $ hg summary - parent: 3:f61adbacd17a - c_d - branch: foo - commit: (clean) - update: 2 new changesets (update) - phases: 4 draft - -Case with some of the branch unstable ------------------------------------- - - $ echo bbb > ddd - $ hg commit --amend - $ hg log -G - @ 7 foo {} draft c_d - | - | o 5 foo {} draft c_f - | | - | o 4 foo {} draft c_e - | | - | x 3 foo {} draft c_d - |/ - o 2 foo {} draft c_c - | - o 1 other {} public c_b - | - o 0 other {} public c_a - - $ hg stack - ### branch: foo - b4$ c_f (unstable) - b3$ c_e (unstable) - b2@ c_d (current) - b1: c_c - ^ c_b - $ hg up b3 - 2 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg stack - ### branch: foo - b4$ c_f (unstable) - b3$ c_e (current unstable) - b2: c_d - b1: c_c - ^ c_b - $ hg up b2 - 1 files updated, 0 files merged, 1 files removed, 0 files unresolved - -Also test the revset: - - $ hg log -r 'stack()' - 2 foo {} draft c_c - 7 foo {} draft c_d - 4 foo {} draft c_e - 5 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:4f2a69f6d380 "c_e" - rebasing 5:913c298d8b0a "c_f" - $ hg log -G - o 9 foo {} draft c_f - | - o 8 foo {} draft c_e - | - @ 7 foo {} draft c_d - | - o 2 foo {} draft c_c - | - o 1 other {} public c_b - | - o 0 other {} 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 - created new head - $ echo aaa > hhh - $ hg add hhh - $ hg commit -m c_h - $ hg log -G - @ 11 foo {} draft c_h - | - o 10 foo {} draft c_g - | - | o 9 foo {} draft c_f - | | - | o 8 foo {} draft c_e - |/ - o 7 foo {} draft c_d - | - o 2 foo {} draft c_c - | - o 1 other {} public c_b - | - o 0 other {} public c_a - - -Test output - - $ hg stack - ### branch: foo (2 heads) - b6: c_f - b5: c_e - b2^ c_d (base) - b4@ c_h (current) - b3: c_g - b2: c_d - b1: 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:2ebb6e48ab8a "c_g" - rebasing 11:634f38e27a1d "c_h" - $ hg log -G - o 15 foo {} draft c_h - | - o 14 foo {} draft c_g - | - @ 13 foo {} draft c_D - | - | o 9 foo {} draft c_f - | | - | o 8 foo {} draft c_e - | | - | x 7 foo {} draft c_d - |/ - o 2 foo {} draft c_c - | - o 1 other {} public c_b - | - o 0 other {} public c_a - - - $ hg stack - ### branch: foo (2 heads) - b6$ c_f (unstable) - b5$ c_e (unstable) - b2^ c_D (base) - b4: c_h - b3: c_g - b2@ c_D (current) - b1: c_c - ^ c_b - -Check that stack doesn't show draft changesets on a branch ----------------------------------------------------------- - - $ hg stack - ### branch: foo (2 heads) - b6$ c_f (unstable) - b5$ c_e (unstable) - b2^ c_D (base) - b4: c_h - b3: c_g - b2@ c_D (current) - b1: c_c - ^ c_b - $ hg phase --public b1 - $ hg stack - ### branch: foo (2 heads) - b5$ c_f (unstable) - b4$ c_e (unstable) - b1^ c_D (base) - b3: c_h - b2: c_g - b1@ c_D (current) - ^ c_c - -Check that stack doesn't show changeset with a topic ----------------------------------------------------- - - $ hg topic --rev b4::b5 sometopic - changed topic on 2 changes - $ hg stack - ### branch: foo - b3: c_h - b2: c_g - b1@ c_D (current) - ^ c_c diff -r 26ec0839865b -r 167567795f6c tests/test-topic-dest.t --- a/tests/test-topic-dest.t Sun Jul 02 17:28:15 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,495 +0,0 @@ - $ . "$TESTDIR/testlib/topic_setup.sh" - - $ hg init jungle - $ cd jungle - $ cat <> .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" - switching to topic elephant - $ 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" - switching to topic monkey - $ 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" - switching to topic elephant - $ 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 26ec0839865b -r 167567795f6c tests/test-topic-fold.t --- a/tests/test-topic-fold.t Sun Jul 02 17:28:15 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,107 +0,0 @@ -test of the fold command ------------------------- - - $ cat >> $HGRCPATH < [defaults] - > amend=-d "0 0" - > fold=-d "0 0" - > split=-d "0 0" - > amend=-d "0 0" - > [web] - > push_ssl = false - > allow_push = * - > [phases] - > publish = False - > [diff] - > git = 1 - > unified = 0 - > [ui] - > interactive = true - > [extensions] - > hgext.graphlog= - > EOF - $ echo "topic=$(echo $(dirname $TESTDIR))/hgext3rd/topic/" >> $HGRCPATH - $ echo "evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/" >> $HGRCPATH - $ mkcommit() { - > echo "$1" > "$1" - > hg add "$1" - > hg ci -m "add $1" $2 $3 - > } - $ logtopic() { - > hg log -G -T "{rev}:{node}\ntopics: {topics}" - > } - -Check that fold keep the topic if all revisions have the topic --------------------------------------------------------------- - - $ hg init testfold - $ cd testfold - $ mkcommit ROOT - $ hg topic myfeature - $ mkcommit feature1 - $ mkcommit feature2 - $ logtopic - @ 2:d76a6166b18c835be9a487c5e21c7d260f0a1676 - | topics: myfeature - o 1:39e7a938055e87615edf675c24a10997ff05bb06 - | topics: myfeature - o 0:3e7df3b3b17c6deb4a1c70e790782fdf17af96a7 - topics: - $ hg fold --exact -r "(tip~1)::" -m "folded" - 2 changesets folded - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg stack - ### topic: myfeature - ### branch: default - t1@ folded (current) - ^ add ROOT - $ logtopic - @ 3:4fd43e5bdc443dc8489edffac19bd8f93ccf1a5c - | topics: myfeature - o 0:3e7df3b3b17c6deb4a1c70e790782fdf17af96a7 - topics: - $ hg summary - parent: 3:4fd43e5bdc44 tip - folded - branch: default - commit: (clean) - update: (current) - phases: 2 draft - topic: myfeature - -Check that fold dismis the topic if not all revisions have the topic --------------------------------------------------------------------- - -(I'm not sure this behavior make senses, but now it is tested) - - $ hg topic --clear - $ mkcommit feature3 - created new head - $ hg topic myotherfeature - $ mkcommit feature4 - $ logtopic - @ 5:5ded4d6d578c37f339b0716de2e46e12ece7cbde - | topics: myotherfeature - o 4:bdf6950b9b5b7c6b377c8132667c73ec86d5734f - | topics: - o 3:4fd43e5bdc443dc8489edffac19bd8f93ccf1a5c - | topics: myfeature - o 0:3e7df3b3b17c6deb4a1c70e790782fdf17af96a7 - topics: - $ hg fold --exact -r "(tip~1)::" -m "folded 2" - 2 changesets folded - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ logtopic - @ 6:03da8f7238e9a4d708d6b8af402c91c68f271477 - | topics: - o 3:4fd43e5bdc443dc8489edffac19bd8f93ccf1a5c - | topics: myfeature - o 0:3e7df3b3b17c6deb4a1c70e790782fdf17af96a7 - topics: - $ hg summary - parent: 6:03da8f7238e9 tip - folded 2 - branch: default - commit: (clean) - update: (current) - phases: 3 draft diff -r 26ec0839865b -r 167567795f6c tests/test-topic-push-concurrent-on.t --- a/tests/test-topic-push-concurrent-on.t Sun Jul 02 17:28:15 2017 +0200 +++ b/tests/test-topic-push-concurrent-on.t Sun Jul 02 17:28:38 2017 +0200 @@ -69,7 +69,7 @@ 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) + (merge or see "hg help push" for details about pushing new heads) [255] $ hg outgoing -r 'desc(CB)' -G comparing with $TESTTMP/main (glob) @@ -168,7 +168,7 @@ 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) + (merge or see "hg help push" for details about pushing new heads) [255] $ hg log -G @ 5 default babar draft CD @@ -211,7 +211,7 @@ 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) + (merge or see "hg help push" for details about pushing new heads) [255] $ hg log -G @ 6 default celeste draft CE @@ -254,7 +254,7 @@ 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) + (merge or see "hg help push" for details about pushing new heads) [255] $ hg log -G @ 6 default celeste draft CE @@ -295,7 +295,7 @@ 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) + (merge or see "hg help push" for details about pushing new heads) [255] Multiple head on a branch merged in a topic changesets @@ -339,7 +339,7 @@ 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) + (merge or see "hg help push" for details about pushing new heads) [255] diff -r 26ec0839865b -r 167567795f6c tests/test-topic-push.t --- a/tests/test-topic-push.t Sun Jul 02 17:28:15 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,413 +0,0 @@ - $ . "$TESTDIR/testlib/topic_setup.sh" - - $ cat << EOF >> $HGRCPATH - > [ui] - > logtemplate = {rev} {branch} {get(namespaces, "topics")} {phase} {desc|firstline}\n - > 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 26ec0839865b -r 167567795f6c tests/test-topic-rebase.t --- a/tests/test-topic-rebase.t Sun Jul 02 17:28:15 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,162 +0,0 @@ -test of the rebase command --------------------------- - - $ cat >> $HGRCPATH < [defaults] - > amend=-d "0 0" - > fold=-d "0 0" - > split=-d "0 0" - > amend=-d "0 0" - > [web] - > push_ssl = false - > allow_push = * - > [phases] - > publish = False - > [diff] - > git = 1 - > unified = 0 - > [ui] - > interactive = true - > [extensions] - > hgext.graphlog= - > 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" $2 $3 - > } - $ logtopic() { - > hg log -G -T "{rev}:{node}\ntopics: {topics}" - > } - -Check that rebase keep the topic in the simple case (1 changeset, no merge conflict) ------------------------------------------------------------------------------------- - - $ hg init testrebase - $ cd testrebase - $ mkcommit ROOT - -Work on myfeature - $ hg topic myfeature - $ mkcommit feature1 - $ hg stack - ### topic: myfeature - ### branch: default - t1@ add feature1 (current) - ^ add ROOT - $ logtopic - @ 1:39e7a938055e87615edf675c24a10997ff05bb06 - | topics: myfeature - o 0:3e7df3b3b17c6deb4a1c70e790782fdf17af96a7 - topics: - -Create another commit on default - $ hg update --rev default - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ mkcommit default - $ logtopic - @ 2:be7622a7a0f43ba713e152f56441275f8e8711ef - | topics: - | o 1:39e7a938055e87615edf675c24a10997ff05bb06 - |/ topics: myfeature - o 0:3e7df3b3b17c6deb4a1c70e790782fdf17af96a7 - topics: - -Rebase the commit - $ hg update --rev 1 - switching to topic myfeature - 1 files updated, 0 files merged, 1 files removed, 0 files unresolved - $ hg rebase - rebasing 1:39e7a938055e "add feature1" - switching to topic myfeature - $ hg stack - ### topic: myfeature - ### branch: default - t1@ add feature1 (current) - ^ add default - $ logtopic - @ 3:fc6593661cf3256ba165cbccd6019ead17cc3726 - | topics: myfeature - o 2:be7622a7a0f43ba713e152f56441275f8e8711ef - | topics: - o 0:3e7df3b3b17c6deb4a1c70e790782fdf17af96a7 - topics: - $ hg up 3 - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg stack - ### topic: myfeature - ### branch: default - t1@ add feature1 (current) - ^ add default - -Check that rebase keep the topic in case of merge conflict ----------------------------------------------------------- - -Create a common base - $ hg topic --clear - $ echo "A" > file - $ hg commit -A -m "default2" file - created new head - -Update the common file in a topic - $ hg topic myotherfeature - $ echo "B" >> file - $ hg commit -m "myotherfeature1" - -Update the common file in default - $ hg update --rev default - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ echo "A2" > file - $ hg commit -m "default3" - -Rebase the topic - $ hg update --rev 5 - switching to topic myotherfeature - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg rebase - rebasing 5:81f854012ec5 "myotherfeature1" - merging file - warning: conflicts while merging file! (edit, then use 'hg resolve --mark') - switching to topic myotherfeature - unresolved conflicts (see hg resolve, then hg rebase --continue) - [1] - -Resolve the conflict - $ echo A2 > file - $ echo B >> file - $ hg resolve -m - (no more unresolved files) - continue: hg rebase --continue - $ hg rebase --continue - rebasing 5:81f854012ec5 "myotherfeature1" - -Check the the commit has the right topic - - $ logtopic - @ 7:6ccb9ec4913b64f3ad719ff1ba66495a70bf35a4 - | topics: myotherfeature - o 6:0b124ef641a7a6f4715d962650d3b367e8c800be - | topics: - o 4:0cd2e1a45ac4e3f9603a05ccfa6d1c70cd759bc5 - | topics: - o 3:fc6593661cf3256ba165cbccd6019ead17cc3726 - | topics: myfeature - o 2:be7622a7a0f43ba713e152f56441275f8e8711ef - | topics: - o 0:3e7df3b3b17c6deb4a1c70e790782fdf17af96a7 - topics: - $ hg stack - ### topic: myotherfeature - ### branch: default - t1@ myotherfeature1 (current) - ^ default3 - $ hg update --rev 7 - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg stack - ### topic: myotherfeature - ### branch: default - t1@ myotherfeature1 (current) - ^ default3 diff -r 26ec0839865b -r 167567795f6c tests/test-topic-shelve.t --- a/tests/test-topic-shelve.t Sun Jul 02 17:28:15 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,50 +0,0 @@ -testing topic with shelve extension ------------------------------------- - - $ . "$TESTDIR/testlib/topic_setup.sh" - - $ hg init repo - $ cd repo - $ cat <>.hg/hgrc - > [extensions] - > shelve= - > EOF - - $ touch a - $ echo "Hello" >> a - $ hg topic "testing-shelve" - $ hg topic - * testing-shelve - $ hg ci -m "First commit" -A - adding a - $ hg topic - * testing-shelve - $ echo " World" >> a - $ hg stack - ### topic: testing-shelve - ### branch: default - t1@ First commit (current) - -shelve test ------------ - - $ hg shelve - shelved as default - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg topic - * testing-shelve - $ hg stack - ### topic: testing-shelve - ### branch: default - t1@ First commit (current) - -unshelve test -------------- - $ hg unshelve - unshelving change 'default' - $ hg topic - * testing-shelve - $ hg stack - ### topic: testing-shelve - ### branch: default - t1@ First commit (current) diff -r 26ec0839865b -r 167567795f6c tests/test-topic-stack-data.t --- a/tests/test-topic-stack-data.t Sun Jul 02 17:28:15 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 26ec0839865b -r 167567795f6c tests/test-topic-stack.t --- a/tests/test-topic-stack.t Sun Jul 02 17:28:15 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,339 +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 - ### branch: - -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 unstable) - 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 topic.stack.index.unstable|t3][topic.stack.state topic.stack.state.current topic.stack.state.unstable|$] [topic.stack.desc topic.stack.desc.current topic.stack.desc.unstable|c_e][topic.stack.state topic.stack.state.current topic.stack.state.unstable| (current unstable)] - [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 - - $ hg log -r 'stack(foo)' - hg: parse error: stack() takes no argument, it works on current topic - [255] - - $ hg log -r 'stack(foobar)' - hg: parse error: stack() takes no argument, it works on current topic - [255] - -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 - -Trying to list non existing topic - $ hg stack thisdoesnotexist - abort: cannot resolve "thisdoesnotexist": no such topic found - [255] - $ hg topic --list thisdoesnotexist - abort: cannot resolve "thisdoesnotexist": no such topic found - [255] - diff -r 26ec0839865b -r 167567795f6c tests/test-topic-tutorial.t --- a/tests/test-topic-tutorial.t Sun Jul 02 17:28:15 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,472 +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 - switching to topic food - 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 - * food - $ 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 - switching to topic tools - 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 - switching to topic drinks - 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 26ec0839865b -r 167567795f6c tests/test-topic.t --- a/tests/test-topic.t Sun Jul 02 17:28:15 2017 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,776 +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 - -r --rev REV revset of existing revisions - -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= --rev . bob - abort: must have obsolete enabled to change topics - [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 --rev 9 - abort: changing topic requires a topic name or --clear - [255] - -Can't change topic of a public change - $ hg topic --rev 1:: --clear - abort: can't change topic of a public change - [255] - -Can clear topics - $ hg topic --rev 9 --clear - changed topic on 1 changes - $ hg log -Gr 'draft() and not obsolete()' - o changeset: 11:0beca5ab56c3 - | 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 - $ hg sum - parent: 12:18b70b8de1f0 tip - fran? - branch: default - commit: (clean) - update: 5 new changesets, 2 branch heads (merge) - phases: 2 draft - $ hg topic --rev 11 wat - changed topic on 1 changes - $ hg log -r . - changeset: 12:18b70b8de1f0 - user: test - date: Thu Jan 01 00:00:00 1970 +0000 - summary: fran? - - $ hg sum - parent: 12:18b70b8de1f0 - fran? - branch: default - commit: (clean) - update: 5 new changesets, 2 branch heads (merge) - phases: 3 draft - unstable: 1 changesets - $ hg topic - wat - $ hg log -Gr 'draft() and not obsolete()' - o changeset: 13:686a642006db - | tag: tip - | topic: wat - | parent: 3:a53952faf762 - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: start on fran - | - | @ changeset: 12:18b70b8de1f0 - | | 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 topic - wat - $ hg rebase -d tip -s . - rebasing 12:18b70b8de1f0 "fran?" - switching to topic wat - $ hg topic - wat - - $ hg log -Gr 'draft()' - @ changeset: 14:45358f7a5892 - | tag: tip - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: fran? - | - o changeset: 13:686a642006db - | 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:6c40a4c21bbe - | tag: tip - | topic: watwat - | parent: 13:686a642006db - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: fran? - | - o changeset: 13:686a642006db - | 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:0f9cd5070654 - tag: tip - parent: 13:686a642006db - user: test - date: Thu Jan 01 00:00:00 1970 +0000 - summary: fran? - -Reading the same topic with topic --rev should work: - $ hg topic --rev . watwat - switching to topic watwat - changed topic on 1 changes - -Testing issue5441 - $ hg co 19 - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg log -Gr 'draft()' - @ changeset: 19:980a0f608481 - | tag: tip - | topic: watwat - | parent: 13:686a642006db - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: fran? - | - o changeset: 13:686a642006db - | topic: wat - | parent: 3:a53952faf762 - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: start on fran - | - - $ hg topics --rev '13::19' changewat - switching to topic changewat - changed topic on 2 changes - $ hg log -Gr 'draft()' - @ changeset: 21:56c83be6105f - | tag: tip - | topic: changewat - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: fran? - | - o changeset: 20:ceba5be9d56f - | topic: changewat - | parent: 3:a53952faf762 - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: start on fran - | - -Case with branching: - - $ hg up changewat - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ hg up t1 - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved - $ echo gamma >> gamma - $ hg ci -m gamma - $ hg log -Gr 'draft()' - @ changeset: 22:0d3d805542b4 - | tag: tip - | topic: changewat - | parent: 20:ceba5be9d56f - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: gamma - | - | o changeset: 21:56c83be6105f - |/ topic: changewat - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: fran? - | - o changeset: 20:ceba5be9d56f - | topic: changewat - | parent: 3:a53952faf762 - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: start on fran - | - $ hg topics --rev 't1::' changewut - switching to topic changewut - changed topic on 3 changes - $ hg log -Gr 'draft()' - @ changeset: 25:729ed5717393 - | tag: tip - | topic: changewut - | parent: 23:62e49f09f883 - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: gamma - | - | o changeset: 24:369c6e2e5474 - |/ topic: changewut - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: fran? - | - o changeset: 23:62e49f09f883 - | topic: changewut - | parent: 3:a53952faf762 - | user: test - | date: Thu Jan 01 00:00:00 1970 +0000 - | summary: start on fran - |