# HG changeset patch # User Augie Fackler # Date 1443555628 14400 # Node ID b86eea66ed0297bc84e7f1e78cdbe12d2e81d17e # Parent 405be3783fbc91b6310f183061984078227b580e evolve: be more complete about copying extra from old revisions For 'hg evolve' we want to copy all extra-level metadata except for branch. This keeps the experimental topics extension from getting obliterated by evolve runs. Many hashes in tests changed due to some extra data coming along for the ride in various places, but no functionality that was tested. It's plausible that this copies too much metadata - maybe we should be dropping rebase_src or convert_revision as well. Right now no tools do that, so I'm biasing towards preserving everything except branch when copying metadata for now. diff -r 405be3783fbc -r b86eea66ed02 hgext/evolve.py --- a/hgext/evolve.py Wed Sep 30 23:33:00 2015 +0900 +++ b/hgext/evolve.py Tue Sep 29 15:40:28 2015 -0400 @@ -857,7 +857,7 @@ user = commitopts.get('user') or old.user() date = commitopts.get('date') or None # old.date() - extra = dict(commitopts.get('extra', {})) + extra = dict(commitopts.get('extra', old.extra())) extra['branch'] = head.branch() new = context.memctx(repo, @@ -943,7 +943,10 @@ 'unresolved merge conflicts (see hg help resolve)') if commitmsg is None: commitmsg = orig.description() - extra = {'rebase_source': orig.hex()} + extra = dict(orig.extra()) + if 'branch' in extra: + del extra['branch'] + extra['rebase_source'] = orig.hex() backup = repo.ui.backupconfig('phases', 'new-commit') try: diff -r 405be3783fbc -r b86eea66ed02 tests/test-evolve-order.t --- a/tests/test-evolve-order.t Wed Sep 30 23:33:00 2015 +0900 +++ b/tests/test-evolve-order.t Tue Sep 29 15:40:28 2015 -0400 @@ -110,13 +110,13 @@ atop:[13] bprime move:[8] add _d atop:[14] add _c - working directory is now at 225d2cc5d3fc + working directory is now at 739f18ac1d03 $ hg log -G - @ 15:225d2cc5d3fc@default(draft) add _d + @ 15:739f18ac1d03@default(draft) add _d | - o 14:0fc229278e4d@default(draft) add _c + o 14:e5960578d158@default(draft) add _c | - o 13:c3741b9eafae@default(draft) bprime + o 13:4ad33fa88946@default(draft) bprime | o 12:9a584314f3f3@default(draft) asecond | @@ -139,21 +139,21 @@ 1 changesets pruned 1 new unstable changesets $ hg log -G -r "desc(_d)::" - @ 22:a329855d0bc1@default(draft) add c1second + @ 22:dcf786e878fd@default(draft) add c1second | - | o 21:072276ece1bf@default(draft) add c2prime + | o 21:507d52d715f6@default(draft) add c2prime | | - | x 20:f137acd06692@default(draft) add c1prime + | x 20:c995cb124ddc@default(draft) add c1prime |/ - | o 19:0a1d9b2ce733@default(draft) add c4_ + | o 19:d096a2437fd0@default(draft) add c4_ | | - | o 18:e2874f41c56c@default(draft) add c3_ + | o 18:cde95c6cba7a@default(draft) add c3_ | | - | x 17:3247c33339fa@default(draft) add c2_ + | x 17:e0d9f7a099fe@default(draft) add c2_ | | - | x 16:df322257c182@default(draft) add c1_ + | x 16:43b7c338b1f8@default(draft) add c1_ |/ - o 15:225d2cc5d3fc@default(draft) add _d + o 15:739f18ac1d03@default(draft) add _d | Second set of stack with no successor for b2_: @@ -168,45 +168,45 @@ 1 changesets pruned $ hg log -G -r "desc(_d)::" - @ 28:ba4c348b6d5e@default(draft) add b3prime + @ 28:b253ff5b65d1@default(draft) add b3prime | - o 27:8fe985f5d0aa@default(draft) add b1prime + o 27:4acf61f11dfb@default(draft) add b1prime | - | o 26:1d9ba2e75c93@default(draft) add b4_ + | o 26:594e1fbbd61f@default(draft) add b4_ | | - | x 25:aec6a9657b6c@default(draft) add b3_ + | x 25:be27500cfc76@default(draft) add b3_ | | - | x 24:a69b58575918@default(draft) add b2_ + | x 24:b54f77dc5831@default(draft) add b2_ | | - | x 23:3564eb18e448@default(draft) add b1_ + | x 23:0e1eba27e9aa@default(draft) add b1_ |/ - | o 22:a329855d0bc1@default(draft) add c1second + | o 22:dcf786e878fd@default(draft) add c1second |/ - | o 21:072276ece1bf@default(draft) add c2prime + | o 21:507d52d715f6@default(draft) add c2prime | | - | x 20:f137acd06692@default(draft) add c1prime + | x 20:c995cb124ddc@default(draft) add c1prime |/ - | o 19:0a1d9b2ce733@default(draft) add c4_ + | o 19:d096a2437fd0@default(draft) add c4_ | | - | o 18:e2874f41c56c@default(draft) add c3_ + | o 18:cde95c6cba7a@default(draft) add c3_ | | - | x 17:3247c33339fa@default(draft) add c2_ + | x 17:e0d9f7a099fe@default(draft) add c2_ | | - | x 16:df322257c182@default(draft) add c1_ + | x 16:43b7c338b1f8@default(draft) add c1_ |/ - o 15:225d2cc5d3fc@default(draft) add _d + o 15:739f18ac1d03@default(draft) add _d | Solve the full second stack and only part of the first one $ echo "(desc(_d)::) - desc(c3_)" (desc(_d)::) - desc(c3_) $ hg evolve --rev "(desc(_d)::) - desc(c3_)" - cannot solve instability of 0a1d9b2ce733, skipping + cannot solve instability of d096a2437fd0, skipping move:[21] add c2prime atop:[22] add c1second move:[26] add b4_ atop:[28] add b3prime - working directory is now at 4897c8ed7645 + working directory is now at ea93190a9cd1 Cleanup $ hg evolve --rev "(desc(_d)::)" @@ -214,23 +214,23 @@ atop:[29] add c2prime move:[19] add c4_ atop:[31] add c3_ - working directory is now at 4ee8feb52325 + working directory is now at 35e7b797ace5 $ hg log -G -r "desc(_d)::" - @ 32:4ee8feb52325@default(draft) add c4_ + @ 32:35e7b797ace5@default(draft) add c4_ | - o 31:08a530ce67e1@default(draft) add c3_ + o 31:0b9488394e89@default(draft) add c3_ | - | o 30:4897c8ed7645@default(draft) add b4_ + | o 30:ea93190a9cd1@default(draft) add b4_ | | - o | 29:3abc7618dd5f@default(draft) add c2prime + o | 29:881b9c092e53@default(draft) add c2prime | | - | o 28:ba4c348b6d5e@default(draft) add b3prime + | o 28:b253ff5b65d1@default(draft) add b3prime | | - | o 27:8fe985f5d0aa@default(draft) add b1prime + | o 27:4acf61f11dfb@default(draft) add b1prime | | - o | 22:a329855d0bc1@default(draft) add c1second + o | 22:dcf786e878fd@default(draft) add c1second |/ - o 15:225d2cc5d3fc@default(draft) add _d + o 15:739f18ac1d03@default(draft) add _d | Test multiple revision with some un-evolvable because parent is splitted @@ -258,6 +258,6 @@ $ hg evolve --rev 'unstable()' move:[30] add b4_ atop:[35] b3second - skipping 08a530ce67e1: divergent rewriting. can't choose destination - working directory is now at a51a8a82fdba + skipping 0b9488394e89: divergent rewriting. can't choose destination + working directory is now at 31809a198477 diff -r 405be3783fbc -r b86eea66ed02 tests/test-evolve.t --- a/tests/test-evolve.t Wed Sep 30 23:33:00 2015 +0900 +++ b/tests/test-evolve.t Tue Sep 29 15:40:28 2015 -0400 @@ -335,7 +335,7 @@ move:[4] another feature (child of 568a468b60fc) atop:[6] a nifty feature merging main-file-1 - working directory is now at 5c9c8d9c2e4e + working directory is now at 99833d22b0c6 $ hg log 7 feature-B: another feature (child of ba0ec09b1bab) - test 6 feature-A: a nifty feature - test @@ -376,10 +376,10 @@ recreate:[8] another feature that rox atop:[7] another feature (child of ba0ec09b1bab) computing new diff - committed as 476d0454d60e - working directory is now at 476d0454d60e + committed as 2d8c5414e9f0 + working directory is now at 2d8c5414e9f0 $ hg glog - @ 9 feature-B: bumped update to 5c9c8d9c2e4e: - test + @ 9 feature-B: bumped update to 99833d22b0c6: - test | o 7 : another feature (child of ba0ec09b1bab) - test | @@ -436,7 +436,7 @@ move:[11] dansk 3! atop:[14] dansk 2! merging main-file-1 - working directory is now at cfb5ebed336d + working directory is now at 536984593824 $ hg glog @ 15 : dansk 3! - test | @@ -809,11 +809,11 @@ 2 changesets folded 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ glog - @ 16:d6239ff09c9f@default(draft) Folding with custom commit message + @ 16:d1297ecc971f@default(draft) Folding with custom commit message | - o 13:56ade053f46d@default(draft) dansk! + o 13:27b934eaf1f9@default(draft) dansk! | - o 7:5c9c8d9c2e4e@default(public) another feature (child of ba0ec09b1bab) + o 7:99833d22b0c6@default(public) another feature (child of ba0ec09b1bab) | o 6:ba0ec09b1bab@default(public) a nifty feature | @@ -828,9 +828,9 @@ 2 changesets folded 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg qlog - 17 - dba606655966 A longer + 17 - 0b1eca0e871b A longer commit message (draft) - 7 - 5c9c8d9c2e4e another feature (child of ba0ec09b1bab) (public) + 7 - 99833d22b0c6 another feature (child of ba0ec09b1bab) (public) 6 - ba0ec09b1bab a nifty feature (public) 0 - e55e0562ee93 base (public) @@ -895,11 +895,11 @@ $ hg evolve move:[5] a2 atop:[7] a1_ - working directory is now at 5406c5cfee42 + working directory is now at eb07e22a0e63 $ hg evolve move:[6] a3 atop:[8] a2 - working directory is now at c7661e655801 + working directory is now at 777c26ca5e78 $ hg log -G --template '{rev} [{branch}] {desc|firstline}\n' @ 9 [mybranch] a3 | @@ -948,7 +948,7 @@ move:[8] a2 atop:[10] a1__ (leaving bookmark testbookmark) - working directory is now at f37ed7a60f43 + working directory is now at d952e93add6f $ ls .hg/bookmarks* .hg/bookmarks @@ -1014,12 +1014,12 @@ recreate:[12] add new file bumped atop:[11] a2 computing new diff - committed as d66b1e328488 - working directory is now at d66b1e328488 + committed as f15d32934071 + working directory is now at f15d32934071 $ hg evolve --any move:[9] a3 - atop:[13] bumped update to f37ed7a60f43: - working directory is now at 7d2ce5f38f9b + atop:[13] bumped update to d952e93add6f: + working directory is now at cce26b684bfe Check that we can resolve troubles in a revset with more than one commit $ hg up 14 -C 0 files updated, 0 files merged, 0 files removed, 0 files unresolved @@ -1038,7 +1038,7 @@ |/ @ 14 : a3 - test | - o 13 : bumped update to f37ed7a60f43: - test + o 13 : bumped update to d952e93add6f: - test | o 11 : a2 - test | @@ -1057,7 +1057,7 @@ | |/ | x 14 : a3 - test |/ - o 13 : bumped update to f37ed7a60f43: - test + o 13 : bumped update to d952e93add6f: - test | o 11 : a2 - test | @@ -1080,7 +1080,7 @@ atop:[18] a3 move:[16] add gh atop:[18] a3 - working directory is now at db3d894869b0 + working directory is now at e02107f98737 $ hg glog @ 20 : add gh - test | @@ -1088,7 +1088,7 @@ |/ o 18 : a3 - test | - o 13 : bumped update to f37ed7a60f43: - test + o 13 : bumped update to d952e93add6f: - test | o 11 : a2 - test | @@ -1210,26 +1210,26 @@ $ hg amend 2 new unstable changesets $ glog -r "18::" - @ 25:4c0bc042ef3b@default(draft) add j1 + @ 25:8dc373be86d9@default(draft) add j1 | - | o 23:c70048fd3350@default(draft) add j3 + | o 23:d7eadcf6eccd@default(draft) add j3 | | - | o 22:714e60ca57b7@default(draft) add j2 + | o 22:2223ea564144@default(draft) add j2 | | - | x 21:b430835af718@default(draft) add j1 + | x 21:48490698b269@default(draft) add j1 |/ - | o 20:db3d894869b0@default(draft) add gh + | o 20:e02107f98737@default(draft) add gh | | - o | 19:10ffdd7e3cc9@default(draft) add gg + o | 19:24e63b319adf@default(draft) add gg |/ - o 18:0bb66d4c1968@default(draft) a3 + o 18:edc3c9de504e@default(draft) a3 | $ hg evolve --rev 23 --any abort: cannot specify both "--rev" and "--any" [255] $ hg evolve --rev 23 - cannot solve instability of c70048fd3350, skipping + cannot solve instability of d7eadcf6eccd, skipping Check that uncommit respects the allowunstable option With only createmarkers we can only uncommit on a head @@ -1237,30 +1237,30 @@ > [experimental] > evolution=createmarkers, allnewcommands > EOF - $ hg up 4c0bc042ef3b^ + $ hg up 8dc373be86d9^ 0 files updated, 0 files merged, 2 files removed, 0 files unresolved $ hg uncommit --all abort: cannot uncommit in the middle of a stack [255] - $ hg up 4c0bc042ef3b + $ hg up 8dc373be86d9 2 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg uncommit --all new changeset is empty (use "hg prune ." to remove it) $ glog -r "18::" - @ 26:04b32348803e@default(draft) add j1 + @ 26:044804d0c10d@default(draft) add j1 | - | o 23:c70048fd3350@default(draft) add j3 + | o 23:d7eadcf6eccd@default(draft) add j3 | | - | o 22:714e60ca57b7@default(draft) add j2 + | o 22:2223ea564144@default(draft) add j2 | | - | x 21:b430835af718@default(draft) add j1 + | x 21:48490698b269@default(draft) add j1 |/ - | o 20:db3d894869b0@default(draft) add gh + | o 20:e02107f98737@default(draft) add gh | | - o | 19:10ffdd7e3cc9@default(draft) add gg + o | 19:24e63b319adf@default(draft) add gg |/ - o 18:0bb66d4c1968@default(draft) a3 + o 18:edc3c9de504e@default(draft) a3 | Check that prune respects the allowunstable option @@ -1277,19 +1277,19 @@ atop:[26] add j1 move:[23] add j3 atop:[27] add j2 - working directory is now at 920a35e8dbd0 + working directory is now at c9a20e2d74aa $ glog -r "18::" - @ 28:920a35e8dbd0@default(draft) add j3 + @ 28:c9a20e2d74aa@default(draft) add j3 | - o 27:31e050d895dd@default(draft) add j2 + o 27:b0e3066231e2@default(draft) add j2 | - o 26:04b32348803e@default(draft) add j1 + o 26:044804d0c10d@default(draft) add j1 | - | o 20:db3d894869b0@default(draft) add gh + | o 20:e02107f98737@default(draft) add gh | | - o | 19:10ffdd7e3cc9@default(draft) add gg + o | 19:24e63b319adf@default(draft) add gg |/ - o 18:0bb66d4c1968@default(draft) a3 + o 18:edc3c9de504e@default(draft) a3 | $ hg up 19 0 files updated, 0 files merged, 2 files removed, 0 files unresolved @@ -1304,30 +1304,30 @@ $ hg prune '26::' 3 changesets pruned $ glog -r "18::" - @ 29:5a6c53544778@default(draft) add c5_ + @ 29:2251801b6c91@default(draft) add c5_ | - | o 20:db3d894869b0@default(draft) add gh + | o 20:e02107f98737@default(draft) add gh | | - o | 19:10ffdd7e3cc9@default(draft) add gg + o | 19:24e63b319adf@default(draft) add gg |/ - o 18:0bb66d4c1968@default(draft) a3 + o 18:edc3c9de504e@default(draft) a3 | Check that fold respects the allowunstable option - $ hg up 0bb66d4c1968 + $ hg up edc3c9de504e 0 files updated, 0 files merged, 2 files removed, 0 files unresolved $ mkcommit unstableifparentisfolded created new head $ glog -r "18::" - @ 30:30ecefd67c0a@default(draft) add unstableifparentisfolded + @ 30:68330ac625b8@default(draft) add unstableifparentisfolded | - | o 29:5a6c53544778@default(draft) add c5_ + | o 29:2251801b6c91@default(draft) add c5_ | | - +---o 20:db3d894869b0@default(draft) add gh + +---o 20:e02107f98737@default(draft) add gh | | - | o 19:10ffdd7e3cc9@default(draft) add gg + | o 19:24e63b319adf@default(draft) add gg |/ - o 18:0bb66d4c1968@default(draft) a3 + o 18:edc3c9de504e@default(draft) a3 | $ hg fold --exact "19 + 18" @@ -1348,13 +1348,13 @@ > EOF $ glog -r "18::" - o 31:5cc6eda0f00d@default(draft) add gg + o 31:580886d07058@default(draft) add gg | - | @ 30:30ecefd67c0a@default(draft) add unstableifparentisfolded + | @ 30:68330ac625b8@default(draft) add unstableifparentisfolded |/ - | o 20:db3d894869b0@default(draft) add gh + | o 20:e02107f98737@default(draft) add gh |/ - o 18:0bb66d4c1968@default(draft) a3 + o 18:edc3c9de504e@default(draft) a3 | Create a split commit @@ -1376,25 +1376,25 @@ 1 changesets pruned 1 new unstable changesets $ glog -r "18::" - @ 35:072908d77206@default(draft) _pp + @ 35:7a555adf2b4a@default(draft) _pp | - o 34:68e429987343@default(draft) _oo + o 34:2be4d2d5bf34@default(draft) _oo | - | o 33:030868870864@default(draft) add uu + | o 33:53f0c003e03e@default(draft) add uu | | - | x 32:7e9688cf0a1b@default(draft) oo+pp + | x 32:1bf2152f4f82@default(draft) oo+pp |/ - | o 31:5cc6eda0f00d@default(draft) add gg + | o 31:580886d07058@default(draft) add gg | | - o | 30:30ecefd67c0a@default(draft) add unstableifparentisfolded + o | 30:68330ac625b8@default(draft) add unstableifparentisfolded |/ - | o 20:db3d894869b0@default(draft) add gh + | o 20:e02107f98737@default(draft) add gh |/ - o 18:0bb66d4c1968@default(draft) a3 + o 18:edc3c9de504e@default(draft) a3 | $ hg evolve --rev "18::" move:[33] add uu atop:[35] _pp - working directory is now at 04fae07745d4 + working directory is now at 43c3f5ef149f diff -r 405be3783fbc -r b86eea66ed02 tests/test-stabilize-order.t --- a/tests/test-stabilize-order.t Wed Sep 30 23:33:00 2015 +0900 +++ b/tests/test-stabilize-order.t Tue Sep 29 15:40:28 2015 -0400 @@ -73,9 +73,9 @@ b committing manifest committing changelog - working directory is now at bede829dd2d3 + working directory is now at 81b8bbcd5892 $ glog - @ 8:bede829dd2d3@default(draft) addb + @ 8:81b8bbcd5892@default(draft) addb | o 7:005fe5914f78@default(draft) adda | @@ -96,7 +96,7 @@ $ hg evolve -v move:[3] addc atop:[8] addb - hg rebase -r 7a7552255fb5 -d bede829dd2d3 + hg rebase -r 7a7552255fb5 -d 81b8bbcd5892 resolving manifests getting b resolving manifests @@ -105,7 +105,7 @@ c committing manifest committing changelog - working directory is now at 65095d7d0dd5 + working directory is now at 0f691739f917 $ hg debugobsolete > successors.new $ diff -u successors.old successors.new --- successors.old* (glob) @@ -113,16 +113,16 @@ @@ -3,3 +3,4 @@ 93418d2c0979643ad446f621195e78720edb05b4 005fe5914f78e8bc64c7eba28117b0b1fa210d0d 0 (*) {'user': 'test'} (glob) 7a7d76dc97c57751de9e80f61ed2a639bd03cd24 0 {93418d2c0979643ad446f621195e78720edb05b4} (*) {'user': 'test'} (glob) - 22619daeed78036f80fbd326b6852519c4f0c25e bede829dd2d3b2ae9bf198c23432b250dc964458 0 (*) {'user': 'test'} (glob) - +7a7552255fb5f8bd745e46fba6f0ca633a4dd716 65095d7d0dd5e4f15503bb7b1f433a5fe9bac052 0 (*) {'user': 'test'} (glob) + 22619daeed78036f80fbd326b6852519c4f0c25e 81b8bbcd5892841efed41433d7a5e9df922396cb 0 (*) {'user': 'test'} (glob) + +7a7552255fb5f8bd745e46fba6f0ca633a4dd716 0f691739f91762462bf8ba21f35fdf71fe64310e 0 (*) {'user': 'test'} (glob) [1] $ glog - @ 9:65095d7d0dd5@default(draft) addc + @ 9:0f691739f917@default(draft) addc | - o 8:bede829dd2d3@default(draft) addb + o 8:81b8bbcd5892@default(draft) addb | o 7:005fe5914f78@default(draft) adda | @@ -140,11 +140,11 @@ $ hg amend 1 new unstable changesets $ glog - @ 11:036cf654e942@default(draft) addb + @ 11:7a68bc4596ea@default(draft) addb | - | o 9:65095d7d0dd5@default(draft) addc + | o 9:0f691739f917@default(draft) addc | | - | x 8:bede829dd2d3@default(draft) addb + | x 8:81b8bbcd5892@default(draft) addb |/ o 7:005fe5914f78@default(draft) adda | @@ -159,7 +159,7 @@ $ hg evolve --any -v move:[9] addc atop:[11] addb - hg rebase -r 65095d7d0dd5 -d 036cf654e942 + hg rebase -r 0f691739f917 -d 7a68bc4596ea resolving manifests removing c getting b @@ -169,11 +169,11 @@ c committing manifest committing changelog - working directory is now at e99ecf51c867 + working directory is now at 2256dae6521f $ glog - @ 12:e99ecf51c867@default(draft) addc + @ 12:2256dae6521f@default(draft) addc | - o 11:036cf654e942@default(draft) addb + o 11:7a68bc4596ea@default(draft) addb | o 7:005fe5914f78@default(draft) adda | @@ -198,30 +198,30 @@ $ hg commit --amend -m "newmessage" 2 new unstable changesets $ hg log -G - @ changeset: 15:49773ccde390 + @ changeset: 15:f83a0bce03e4 | tag: tip - | parent: 11:036cf654e942 + | parent: 11:7a68bc4596ea | user: test | date: Thu Jan 01 00:00:00 1970 +0000 | summary: newmessage | - | o changeset: 14:a9892777b519 - | | parent: 12:e99ecf51c867 + | o changeset: 14:fa68011f392e + | | parent: 12:2256dae6521f | | user: test | | date: Thu Jan 01 00:00:00 1970 +0000 | | summary: secondambiguous | | - | | o changeset: 13:0b6e26b2472d + | | o changeset: 13:bdc003b6eec2 | |/ user: test | | date: Thu Jan 01 00:00:00 1970 +0000 | | summary: firstambiguous | | - | x changeset: 12:e99ecf51c867 + | x changeset: 12:2256dae6521f |/ user: test | date: Thu Jan 01 00:00:00 1970 +0000 | summary: addc | - o changeset: 11:036cf654e942 + o changeset: 11:7a68bc4596ea | parent: 7:005fe5914f78 | user: test | date: Thu Jan 01 00:00:00 1970 +0000