Mercurial > evolve
view tests/test-rewind.t @ 3861:bbe635dfd75c
rewind: obsolete latest successors unless instructed otherwise
To prevent the creations of divergence, we automatically mark the successors set
of the rewinded changeset as obsoleted by the rewind result. A new flag
`--as-divergence` is added to disable this behavior.
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Sun, 17 Jun 2018 00:15:18 +0200 |
parents | fa184c5edfe8 |
children | 8d3eed113b77 |
line wrap: on
line source
This test file test the rewind command in several situations. Global setup ============ $ . $TESTDIR/testlib/common.sh $ cat >> $HGRCPATH <<EOF > [ui] > interactive = true > [phases] > publish=False > [extensions] > evolve = > EOF $ hg init rewind-testing-base $ cd rewind-testing-base $ echo a > root $ hg add root $ hg ci -m 'c_ROOT' $ echo a > A $ hg add A $ hg ci -m 'c_A0' $ echo a > B $ hg add B $ hg ci -m 'c_B0' $ hg log -G @ changeset: 2:7e594302a05d | tag: tip | user: test | date: Thu Jan 01 00:00:00 1970 +0000 | summary: c_B0 | o changeset: 1:579f120ba918 | user: test | date: Thu Jan 01 00:00:00 1970 +0000 | summary: c_A0 | o changeset: 0:eba9c2249fe7 user: test date: Thu Jan 01 00:00:00 1970 +0000 summary: c_ROOT $ cd .. Test rewinding to single changesets ==================================== $ hg clone rewind-testing-base rewind-testing-simple-prune updating to branch default 3 files updated, 0 files merged, 0 files removed, 0 files unresolved $ cd rewind-testing-simple-prune Prune changeset unrelated to the working copy --------------------------------------------- Setup ````` Update to an unrelated changeset $ hg up 'desc("c_ROOT")' 0 files updated, 0 files merged, 2 files removed, 0 files unresolved Prune the head $ hg prune -r 'desc("c_B0")' 1 changesets pruned $ hg log -G o changeset: 1:579f120ba918 | tag: tip | user: test | date: Thu Jan 01 00:00:00 1970 +0000 | summary: c_A0 | @ changeset: 0:eba9c2249fe7 user: test date: Thu Jan 01 00:00:00 1970 +0000 summary: c_ROOT Actual rewind ````````````` $ hg rewind --hidden --to 'desc("c_B0")' rewinded to 1 changesets $ hg debugobsolete 7e594302a05d3769b27be88fc3cdfd39d7498498 0 {579f120ba91885449adc92eedf48ef3569742cee} (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '0', 'operation': 'prune', 'user': 'test'} 7e594302a05d3769b27be88fc3cdfd39d7498498 073989a581cf430a844192364fa37606357cbbc2 4 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '2', 'operation': 'rewind', 'user': 'test'} $ hg obslog -r 'desc("c_B0")' o 073989a581cf (3) c_B0 | x 7e594302a05d (2) c_B0 pruned using prune by test (Thu Jan 01 00:00:00 1970 +0000) rewritten(meta) as 073989a581cf using rewind by test (Thu Jan 01 00:00:00 1970 +0000) $ hg log -G o changeset: 3:073989a581cf | tag: tip | parent: 1:579f120ba918 | user: test | date: Thu Jan 01 00:00:00 1970 +0000 | summary: c_B0 | o changeset: 1:579f120ba918 | user: test | date: Thu Jan 01 00:00:00 1970 +0000 | summary: c_A0 | @ changeset: 0:eba9c2249fe7 user: test date: Thu Jan 01 00:00:00 1970 +0000 summary: c_ROOT XXX-TODO: fix the obsfate from "meta-changed as 3" to "identical" or something. $ hg log -G --hidden o changeset: 3:073989a581cf | tag: tip | parent: 1:579f120ba918 | user: test | date: Thu Jan 01 00:00:00 1970 +0000 | summary: c_B0 | | x changeset: 2:7e594302a05d |/ user: test | date: Thu Jan 01 00:00:00 1970 +0000 | obsolete: meta-changed using rewind as 3:073989a581cf | summary: c_B0 | o changeset: 1:579f120ba918 | user: test | date: Thu Jan 01 00:00:00 1970 +0000 | summary: c_A0 | @ changeset: 0:eba9c2249fe7 user: test date: Thu Jan 01 00:00:00 1970 +0000 summary: c_ROOT Other independant rewind create a different revision ---------------------------------------------------------- setup ````` note: we use "default-date" to make it a "different rewind" $ echo '[devel]' >> $HGRCPATH $ echo 'default-date = 1 0' >> $HGRCPATH Actual rewind ````````````` $ hg prune 'desc("c_B0")' 1 changesets pruned $ hg rewind --hidden --to 'min(desc("c_B0"))' rewinded to 1 changesets $ hg debugobsolete 7e594302a05d3769b27be88fc3cdfd39d7498498 0 {579f120ba91885449adc92eedf48ef3569742cee} (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '0', 'operation': 'prune', 'user': 'test'} 7e594302a05d3769b27be88fc3cdfd39d7498498 073989a581cf430a844192364fa37606357cbbc2 4 (Thu Jan 01 00:00:00 1970 +0000) {'ef1': '2', 'operation': 'rewind', 'user': 'test'} 073989a581cf430a844192364fa37606357cbbc2 0 {579f120ba91885449adc92eedf48ef3569742cee} (Thu Jan 01 00:00:01 1970 +0000) {'ef1': '0', 'operation': 'prune', 'user': 'test'} 7e594302a05d3769b27be88fc3cdfd39d7498498 48acf2c0d9c8961859ce9a913671eb2adc9b057b 4 (Thu Jan 01 00:00:01 1970 +0000) {'ef1': '34', 'operation': 'rewind', 'user': 'test'} $ hg obslog -r 'desc("c_B0")' --all x 073989a581cf (3) c_B0 | pruned using prune by test (Thu Jan 01 00:00:01 1970 +0000) | | o 48acf2c0d9c8 (4) c_B0 |/ x 7e594302a05d (2) c_B0 pruned using prune by test (Thu Jan 01 00:00:00 1970 +0000) rewritten(meta) as 073989a581cf using rewind by test (Thu Jan 01 00:00:00 1970 +0000) rewritten(meta, date) as 48acf2c0d9c8 using rewind by test (Thu Jan 01 00:00:01 1970 +0000) $ hg log -G o changeset: 4:48acf2c0d9c8 | tag: tip | parent: 1:579f120ba918 | user: test | date: Thu Jan 01 00:00:01 1970 +0000 | summary: c_B0 | o changeset: 1:579f120ba918 | user: test | date: Thu Jan 01 00:00:00 1970 +0000 | summary: c_A0 | @ changeset: 0:eba9c2249fe7 user: test date: Thu Jan 01 00:00:00 1970 +0000 summary: c_ROOT $ hg log -G --hidden o changeset: 4:48acf2c0d9c8 | tag: tip | parent: 1:579f120ba918 | user: test | date: Thu Jan 01 00:00:01 1970 +0000 | summary: c_B0 | | x changeset: 3:073989a581cf |/ parent: 1:579f120ba918 | user: test | date: Thu Jan 01 00:00:00 1970 +0000 | obsolete: pruned using prune | summary: c_B0 | | x changeset: 2:7e594302a05d |/ user: test | date: Thu Jan 01 00:00:00 1970 +0000 | obsolete: rewritten using rewind as 4:48acf2c0d9c8 | obsolete: meta-changed using rewind as 3:073989a581cf | summary: c_B0 | o changeset: 1:579f120ba918 | user: test | date: Thu Jan 01 00:00:00 1970 +0000 | summary: c_A0 | @ changeset: 0:eba9c2249fe7 user: test date: Thu Jan 01 00:00:00 1970 +0000 summary: c_ROOT $ cd .. rewind a simple amend - creating content-divergence --------------------------------------------------- Setup ````` $ hg clone rewind-testing-base rewind-testing-single-rewrite updating to branch default 3 files updated, 0 files merged, 0 files removed, 0 files unresolved $ cd rewind-testing-single-rewrite $ echo BB > B $ hg amend -m 'c_B1' $ hg log -G @ changeset: 3:25c8f5ab0c3b | tag: tip | parent: 1:579f120ba918 | user: test | date: Thu Jan 01 00:00:00 1970 +0000 | summary: c_B1 | o changeset: 1:579f120ba918 | user: test | date: Thu Jan 01 00:00:00 1970 +0000 | summary: c_A0 | o changeset: 0:eba9c2249fe7 user: test date: Thu Jan 01 00:00:00 1970 +0000 summary: c_ROOT Actual rewind ````````````` $ hg rewind --hidden --to 'desc("c_B0")' --as-divergence 2 new content-divergent changesets rewinded to 1 changesets $ hg debugobsolete 7e594302a05d3769b27be88fc3cdfd39d7498498 25c8f5ab0c3bb569ec672570f1a901be4c6f032b 0 (Thu Jan 01 00:00:01 1970 +0000) {'ef1': '9', 'operation': 'amend', 'user': 'test'} 7e594302a05d3769b27be88fc3cdfd39d7498498 48acf2c0d9c8961859ce9a913671eb2adc9b057b 4 (Thu Jan 01 00:00:01 1970 +0000) {'ef1': '34', 'operation': 'rewind', 'user': 'test'} $ hg obslog --rev 'desc("c_B0")' * 48acf2c0d9c8 (4) c_B0 | x 7e594302a05d (2) c_B0 rewritten(description, content) as 25c8f5ab0c3b using amend by test (Thu Jan 01 00:00:01 1970 +0000) rewritten(meta, date) as 48acf2c0d9c8 using rewind by test (Thu Jan 01 00:00:01 1970 +0000) $ hg log -G * changeset: 4:48acf2c0d9c8 | tag: tip | parent: 1:579f120ba918 | user: test | date: Thu Jan 01 00:00:01 1970 +0000 | instability: content-divergent | summary: c_B0 | | @ changeset: 3:25c8f5ab0c3b |/ parent: 1:579f120ba918 | user: test | date: Thu Jan 01 00:00:00 1970 +0000 | instability: content-divergent | summary: c_B1 | o changeset: 1:579f120ba918 | user: test | date: Thu Jan 01 00:00:00 1970 +0000 | summary: c_A0 | o changeset: 0:eba9c2249fe7 user: test date: Thu Jan 01 00:00:00 1970 +0000 summary: c_ROOT $ hg log -G --hidden * changeset: 4:48acf2c0d9c8 | tag: tip | parent: 1:579f120ba918 | user: test | date: Thu Jan 01 00:00:01 1970 +0000 | instability: content-divergent | summary: c_B0 | | @ changeset: 3:25c8f5ab0c3b |/ parent: 1:579f120ba918 | user: test | date: Thu Jan 01 00:00:00 1970 +0000 | instability: content-divergent | summary: c_B1 | | x changeset: 2:7e594302a05d |/ user: test | date: Thu Jan 01 00:00:00 1970 +0000 | obsolete: rewritten using rewind as 4:48acf2c0d9c8 | obsolete: rewritten using amend as 3:25c8f5ab0c3b | summary: c_B0 | o changeset: 1:579f120ba918 | user: test | date: Thu Jan 01 00:00:00 1970 +0000 | summary: c_A0 | o changeset: 0:eba9c2249fe7 user: test date: Thu Jan 01 00:00:00 1970 +0000 summary: c_ROOT Cleanup ``````` $ hg prune 'max(desc("c_B0"))' 1 changesets pruned $ hg log -G @ changeset: 3:25c8f5ab0c3b | tag: tip | parent: 1:579f120ba918 | user: test | date: Thu Jan 01 00:00:00 1970 +0000 | summary: c_B1 | o changeset: 1:579f120ba918 | user: test | date: Thu Jan 01 00:00:00 1970 +0000 | summary: c_A0 | o changeset: 0:eba9c2249fe7 user: test date: Thu Jan 01 00:00:00 1970 +0000 summary: c_ROOT $ echo 'default-date = 2 0' >> $HGRCPATH rewind a simple amend - obsoleting the current latest successors ---------------------------------------------------------------- $ hg rewind --hidden --to 'min(desc("c_B0"))' rewinded to 1 changesets $ hg debugobsolete 7e594302a05d3769b27be88fc3cdfd39d7498498 25c8f5ab0c3bb569ec672570f1a901be4c6f032b 0 (Thu Jan 01 00:00:01 1970 +0000) {'ef1': '9', 'operation': 'amend', 'user': 'test'} 7e594302a05d3769b27be88fc3cdfd39d7498498 48acf2c0d9c8961859ce9a913671eb2adc9b057b 4 (Thu Jan 01 00:00:01 1970 +0000) {'ef1': '34', 'operation': 'rewind', 'user': 'test'} 48acf2c0d9c8961859ce9a913671eb2adc9b057b 0 {579f120ba91885449adc92eedf48ef3569742cee} (Thu Jan 01 00:00:01 1970 +0000) {'ef1': '0', 'operation': 'prune', 'user': 'test'} 7e594302a05d3769b27be88fc3cdfd39d7498498 d8b4471cfb3caa290e0a78ae6bc57d78656c9075 4 (Thu Jan 01 00:00:02 1970 +0000) {'ef1': '34', 'operation': 'rewind', 'user': 'test'} 25c8f5ab0c3bb569ec672570f1a901be4c6f032b d8b4471cfb3caa290e0a78ae6bc57d78656c9075 0 (Thu Jan 01 00:00:02 1970 +0000) {'ef1': '43', 'operation': 'rewind', 'user': 'test'} $ hg obslog --rev 'desc("c_B0")' o d8b4471cfb3c (5) c_B0 |\ @ | 25c8f5ab0c3b (3) c_B1 |/ rewritten(description, meta, date, content) as d8b4471cfb3c using rewind by test (Thu Jan 01 00:00:02 1970 +0000) | x 7e594302a05d (2) c_B0 rewritten(description, content) as 25c8f5ab0c3b using amend by test (Thu Jan 01 00:00:01 1970 +0000) rewritten(meta, date) as 48acf2c0d9c8 using rewind by test (Thu Jan 01 00:00:01 1970 +0000) rewritten(meta, date) as d8b4471cfb3c using rewind by test (Thu Jan 01 00:00:02 1970 +0000) $ hg log -G o changeset: 5:d8b4471cfb3c | tag: tip | parent: 1:579f120ba918 | user: test | date: Thu Jan 01 00:00:02 1970 +0000 | summary: c_B0 | | @ changeset: 3:25c8f5ab0c3b |/ parent: 1:579f120ba918 | user: test | date: Thu Jan 01 00:00:00 1970 +0000 | obsolete: rewritten using rewind as 5:d8b4471cfb3c | summary: c_B1 | o changeset: 1:579f120ba918 | user: test | date: Thu Jan 01 00:00:00 1970 +0000 | summary: c_A0 | o changeset: 0:eba9c2249fe7 user: test date: Thu Jan 01 00:00:00 1970 +0000 summary: c_ROOT $ hg log -G --hidden o changeset: 5:d8b4471cfb3c | tag: tip | parent: 1:579f120ba918 | user: test | date: Thu Jan 01 00:00:02 1970 +0000 | summary: c_B0 | | x changeset: 4:48acf2c0d9c8 |/ parent: 1:579f120ba918 | user: test | date: Thu Jan 01 00:00:01 1970 +0000 | obsolete: pruned using prune | summary: c_B0 | | @ changeset: 3:25c8f5ab0c3b |/ parent: 1:579f120ba918 | user: test | date: Thu Jan 01 00:00:00 1970 +0000 | obsolete: rewritten using rewind as 5:d8b4471cfb3c | summary: c_B1 | | x changeset: 2:7e594302a05d |/ user: test | date: Thu Jan 01 00:00:00 1970 +0000 | obsolete: rewritten using rewind as 5:d8b4471cfb3c | obsolete: rewritten using rewind as 4:48acf2c0d9c8 | obsolete: rewritten using amend as 3:25c8f5ab0c3b | summary: c_B0 | o changeset: 1:579f120ba918 | user: test | date: Thu Jan 01 00:00:00 1970 +0000 | summary: c_A0 | o changeset: 0:eba9c2249fe7 user: test date: Thu Jan 01 00:00:00 1970 +0000 summary: c_ROOT