diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -5583,18 +5583,19 @@ repo = scmutil.unhidehashlikerevs(repo, [rev], 'nowarn') ctx = scmutil.revsingle(repo, rev, rev) rev = ctx.rev() - if ctx.hidden(): + hidden = ctx.hidden() + repo.ui.setconfig('ui', 'forcemerge', opts.get(r'tool'), 'update') + + ret = hg.updatetotally(ui, repo, rev, brev, clean=clean, + updatecheck=updatecheck) + if hidden: ctxstr = ctx.hex()[:12] - ui.warn(_("updating to a hidden changeset %s\n") % ctxstr) + ui.warn(_("updated to hidden changeset %s\n") % ctxstr) if ctx.obsolete(): obsfatemsg = obsutil._getfilteredreason(repo, ctxstr, ctx) ui.warn("(%s)\n" % obsfatemsg) - - repo.ui.setconfig('ui', 'forcemerge', opts.get(r'tool'), 'update') - - return hg.updatetotally(ui, repo, rev, brev, clean=clean, - updatecheck=updatecheck) + return ret @command('verify', []) def verify(ui, repo): diff --git a/tests/test-directaccess.t b/tests/test-directaccess.t --- a/tests/test-directaccess.t +++ b/tests/test-directaccess.t @@ -156,9 +156,9 @@ `hg update` $ hg up 28ad74 - updating to a hidden changeset 28ad74487de9 + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + updated to hidden changeset 28ad74487de9 (hidden revision '28ad74487de9' was rewritten as: 2443a0e66469) - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg up 3 1 files updated, 0 files merged, 0 files removed, 0 files unresolved diff --git a/tests/test-log.t b/tests/test-log.t --- a/tests/test-log.t +++ b/tests/test-log.t @@ -1943,7 +1943,7 @@ test that parent prevent a changeset to be hidden $ hg up 1 -q --hidden - updating to a hidden changeset a765632148dc + updated to hidden changeset a765632148dc (hidden revision 'a765632148dc' is pruned) $ hg log --template='{rev}:{node}\n' 1:a765632148dc55d38c35c4f247c618701886cb2f diff --git a/tests/test-obshistory.t b/tests/test-obshistory.t --- a/tests/test-obshistory.t +++ b/tests/test-obshistory.t @@ -55,9 +55,9 @@ (use --hidden to access hidden revisions) [255] $ hg update --hidden "desc(A0)" - updating to a hidden changeset 471f378eab4c + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + updated to hidden changeset 471f378eab4c (hidden revision '471f378eab4c' was rewritten as: 4ae3a4151de9) - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved Test output with pruned commit ============================== @@ -118,9 +118,9 @@ (use --hidden to access hidden revisions) [255] $ hg up --hidden -r 'desc(B0)' - updating to a hidden changeset 0dec01379d3b + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + updated to hidden changeset 0dec01379d3b (hidden revision '0dec01379d3b' is pruned) - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved Test output with splitted commit ================================ @@ -195,9 +195,9 @@ (use --hidden to access hidden revisions) [255] $ hg update --hidden 'min(desc(A0))' - updating to a hidden changeset 471597cad322 + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved + updated to hidden changeset 471597cad322 (hidden revision '471597cad322' was split as: 337fec4d2edc, f257fde29c7a) - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved Test output with lots of splitted commit ======================================== @@ -294,9 +294,9 @@ (use --hidden to access hidden revisions) [255] $ hg update --hidden 'min(desc(A0))' - updating to a hidden changeset de7290d8b885 + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved + updated to hidden changeset de7290d8b885 (hidden revision 'de7290d8b885' was split as: 337fec4d2edc, f257fde29c7a and 2 more) - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved Test output with folded commit ============================== @@ -373,17 +373,17 @@ (use --hidden to access hidden revisions) [255] $ hg update --hidden 'desc(A0)' - updating to a hidden changeset 471f378eab4c + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + updated to hidden changeset 471f378eab4c (hidden revision '471f378eab4c' was rewritten as: eb5a0daa2192) - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved $ hg update 0dec01379d3b abort: hidden revision '0dec01379d3b' was rewritten as: eb5a0daa2192! (use --hidden to access hidden revisions) [255] $ hg update --hidden 'desc(B0)' - updating to a hidden changeset 0dec01379d3b + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + updated to hidden changeset 0dec01379d3b (hidden revision '0dec01379d3b' was rewritten as: eb5a0daa2192) - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved Test output with divergence =========================== @@ -416,9 +416,9 @@ summary: ROOT $ hg update --hidden 'desc(A0)' - updating to a hidden changeset 471f378eab4c + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved + updated to hidden changeset 471f378eab4c (hidden revision '471f378eab4c' was rewritten as: fdf9bde5129a) - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg commit --amend -m "A2" 2 new content-divergent changesets $ hg log --hidden -G @@ -456,9 +456,9 @@ (use --hidden to access hidden revisions) [255] $ hg update --hidden 'desc(A0)' - updating to a hidden changeset 471f378eab4c + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved + updated to hidden changeset 471f378eab4c (hidden revision '471f378eab4c' has diverged) - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved Test output with amended + folded commit ======================================== @@ -551,13 +551,13 @@ (use --hidden to access hidden revisions) [255] $ hg update --hidden 'desc(A0)' - updating to a hidden changeset 471f378eab4c + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + updated to hidden changeset 471f378eab4c (hidden revision '471f378eab4c' was rewritten as: eb5a0daa2192) - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved $ hg update --hidden 0dec01379d3b - updating to a hidden changeset 0dec01379d3b + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + updated to hidden changeset 0dec01379d3b (hidden revision '0dec01379d3b' was rewritten as: eb5a0daa2192) - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg update 0dec01379d3b 0 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg update --hidden 'desc(B0)' diff --git a/tests/test-obsmarker-template.t b/tests/test-obsmarker-template.t --- a/tests/test-obsmarker-template.t +++ b/tests/test-obsmarker-template.t @@ -75,9 +75,9 @@ Check templates --------------- $ hg up 'desc(A0)' --hidden - updating to a hidden changeset 471f378eab4c + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + updated to hidden changeset 471f378eab4c (hidden revision '471f378eab4c' was rewritten as: d004c8f274b9) - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved Predecessors template should show current revision as it is the working copy $ hg tlog @@ -148,9 +148,9 @@ summary: ROOT $ hg up 'desc(A1)' --hidden - updating to a hidden changeset a468dc9b3633 + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + updated to hidden changeset a468dc9b3633 (hidden revision 'a468dc9b3633' was rewritten as: d004c8f274b9) - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved Predecessors template should show current revision as it is the working copy $ hg tlog @@ -417,9 +417,9 @@ --------------- $ hg up 'obsolete()' --hidden - updating to a hidden changeset 471597cad322 + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved + updated to hidden changeset 471597cad322 (hidden revision '471597cad322' was split as: 337fec4d2edc, f257fde29c7a) - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved Predecessors template should show current revision as it is the working copy $ hg tlog @@ -627,9 +627,9 @@ --------------- $ hg up 'desc(A0)' --hidden - updating to a hidden changeset 471f378eab4c + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + updated to hidden changeset 471f378eab4c (hidden revision '471f378eab4c' was rewritten as: eb5a0daa2192) - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved Predecessors template should show current revision as it is the working copy $ hg tlog @@ -653,9 +653,9 @@ o ea207398892e $ hg up 'desc(B0)' --hidden - updating to a hidden changeset 0dec01379d3b + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + updated to hidden changeset 0dec01379d3b (hidden revision '0dec01379d3b' was rewritten as: eb5a0daa2192) - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved Predecessors template should show both predecessors as they should be both displayed @@ -820,9 +820,9 @@ summary: ROOT $ hg update --hidden 'desc(A0)' - updating to a hidden changeset 471f378eab4c + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved + updated to hidden changeset 471f378eab4c (hidden revision '471f378eab4c' was rewritten as: fdf9bde5129a) - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg commit --amend -m "A2" 2 new content-divergent changesets $ hg log --hidden -G @@ -894,9 +894,9 @@ --------------- $ hg up 'desc(A0)' --hidden - updating to a hidden changeset 471f378eab4c + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved + updated to hidden changeset 471f378eab4c (hidden revision '471f378eab4c' has diverged) - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved Predecessors template should show current revision as it is the working copy $ hg tlog @@ -1161,9 +1161,9 @@ --------------- $ hg up 'desc(A0)' --hidden - updating to a hidden changeset 471f378eab4c + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + updated to hidden changeset 471f378eab4c (hidden revision '471f378eab4c' was rewritten as: eb5a0daa2192) - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved Predecessors template should show current revision as it is the working copy $ hg tlog @@ -1187,9 +1187,9 @@ o ea207398892e $ hg up 'desc(B0)' --hidden - updating to a hidden changeset 0dec01379d3b + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + updated to hidden changeset 0dec01379d3b (hidden revision '0dec01379d3b' was rewritten as: eb5a0daa2192) - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved Predecessors template should both predecessors as they are visible $ hg tlog @@ -1219,9 +1219,9 @@ o ea207398892e $ hg up 'desc(B1)' --hidden - updating to a hidden changeset b7ea6d14e664 + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved + updated to hidden changeset b7ea6d14e664 (hidden revision 'b7ea6d14e664' was rewritten as: eb5a0daa2192) - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved Predecessors template should both predecessors as they are visible $ hg tlog @@ -1623,9 +1623,9 @@ $ hg up -r "desc(B0)" --hidden - updating to a hidden changeset 0dec01379d3b + 2 files updated, 0 files merged, 1 files removed, 0 files unresolved + updated to hidden changeset 0dec01379d3b (hidden revision '0dec01379d3b' is pruned) - 2 files updated, 0 files merged, 1 files removed, 0 files unresolved $ hg tlog o f897c6137566 | Predecessors: 2:0dec01379d3b @@ -2087,9 +2087,9 @@ o ea207398892e $ hg up --hidden 4 - updating to a hidden changeset 9bd10a0775e4 + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + updated to hidden changeset 9bd10a0775e4 (hidden revision '9bd10a0775e4' has diverged) - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg rebase -r 7 -d 8 --config extensions.rebase= rebasing 7:ba2ed02b0c9a "Add A,B,C" $ hg tlog @@ -2333,9 +2333,9 @@ obsoleted 1 changesets $ hg up -r "desc(A0)" --hidden - updating to a hidden changeset 471f378eab4c + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved + updated to hidden changeset 471f378eab4c (hidden revision '471f378eab4c' is pruned) - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg commit --amend -m "A2" $ hg debugobsolete --record-parent `getid "."` obsoleted 1 changesets @@ -2344,9 +2344,9 @@ ------------ $ hg up "desc(A0)" --hidden - updating to a hidden changeset 471f378eab4c + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved + updated to hidden changeset 471f378eab4c (hidden revision '471f378eab4c' is pruned) - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg tlog @ 471f378eab4c | @@ -2499,9 +2499,9 @@ --------------- $ hg up 'desc("A0")' --hidden - updating to a hidden changeset 471597cad322 + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved + updated to hidden changeset 471597cad322 (hidden revision '471597cad322' is pruned) - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved # todo: the obsfate output is not ideal $ hg fatelog @@ -2512,9 +2512,9 @@ o ea207398892e $ hg up -r 'desc("A2")' --hidden - updating to a hidden changeset 0d0ef4bdf70e + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved + updated to hidden changeset 0d0ef4bdf70e (hidden revision '0d0ef4bdf70e' is pruned) - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved $ hg fatelog --hidden @ 0d0ef4bdf70e diff --git a/tests/test-obsolete.t b/tests/test-obsolete.t --- a/tests/test-obsolete.t +++ b/tests/test-obsolete.t @@ -62,7 +62,7 @@ $ hg tip -1:000000000000 (public) [tip ] $ hg up --hidden tip --quiet - updating to a hidden changeset 97b7c2d76b18 + updated to hidden changeset 97b7c2d76b18 (hidden revision '97b7c2d76b18' is pruned) Killing a single changeset with itself should fail diff --git a/tests/test-rebase-obsolete.t b/tests/test-rebase-obsolete.t --- a/tests/test-rebase-obsolete.t +++ b/tests/test-rebase-obsolete.t @@ -281,7 +281,7 @@ even though it is hidden (until we're moved there). $ hg --hidden up -qr 'first(hidden())' - updating to a hidden changeset 42ccdea3bb16 + updated to hidden changeset 42ccdea3bb16 (hidden revision '42ccdea3bb16' is pruned) $ hg rebase --rev 13 --dest 15 rebasing 13:98f6af4ee953 "C" @@ -642,9 +642,9 @@ Test hidden changesets in the rebase set (issue4504) $ hg up --hidden 9 - updating to a hidden changeset 4bde274eefcf + 3 files updated, 0 files merged, 1 files removed, 0 files unresolved + updated to hidden changeset 4bde274eefcf (hidden revision '4bde274eefcf' was rewritten as: acd174b7ab39) - 3 files updated, 0 files merged, 1 files removed, 0 files unresolved $ echo J > J $ hg add J $ hg commit -m J @@ -764,9 +764,9 @@ $ hg commit --amend -m B1 $ hg commit --amend -m B2 $ hg up --hidden 'desc(B0)' - updating to a hidden changeset a8b11f55fb19 + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved + updated to hidden changeset a8b11f55fb19 (hidden revision 'a8b11f55fb19' was rewritten as: 261e70097290) - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved $ echo C > C $ hg add C $ hg commit -m C @@ -790,9 +790,9 @@ Even when the chain include missing node $ hg up --hidden 'desc(B0)' - updating to a hidden changeset a8b11f55fb19 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + updated to hidden changeset a8b11f55fb19 (hidden revision 'a8b11f55fb19' was rewritten as: 261e70097290) - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved $ echo D > D $ hg add D $ hg commit -m D @@ -909,9 +909,9 @@ $ hg add bar $ hg commit --amend -m "10'" $ hg up 10 --hidden - updating to a hidden changeset 121d9e3bc4c6 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + updated to hidden changeset 121d9e3bc4c6 (hidden revision '121d9e3bc4c6' was rewritten as: 77d874d096a2) - 0 files updated, 0 files merged, 1 files removed, 0 files unresolved $ echo "bar" > foo $ hg add foo $ hg commit -m "bar foo" @@ -1706,7 +1706,7 @@ $ rm .hg/localtags $ hg update -q $C --hidden - updating to a hidden changeset 7829726be4dc + updated to hidden changeset 7829726be4dc (hidden revision '7829726be4dc' is pruned) $ hg rebase -s $B -d $D rebasing 1:2ec65233581b "B" diff --git a/tests/test-update-branches.t b/tests/test-update-branches.t --- a/tests/test-update-branches.t +++ b/tests/test-update-branches.t @@ -516,11 +516,33 @@ $ hg bookmarks * bm 5:ff252e8273df +Test that we abort before we warn about the hidden commit if the working +directory is dirty + $ echo conflict > a + $ hg up --hidden 3 + abort: uncommitted changes + (commit or update --clean to discard changes) + [255] + +Test that we still warn also when there are conflicts + $ hg up -m --hidden 3 + merging a + warning: conflicts while merging a! (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 + (leaving bookmark bm) + updated to hidden changeset 6efa171f091b + (hidden revision '6efa171f091b' was rewritten as: d047485b3896) + [1] + $ hg revert -r . a + $ hg resolve -m + (no more unresolved files) + Test that 4 is detected as the no-argument destination from 3 and also moves the bookmark with it $ hg up --quiet 0 # we should be able to update to 3 directly $ hg up --quiet --hidden 3 # but not implemented yet. - updating to a hidden changeset 6efa171f091b + updated to hidden changeset 6efa171f091b (hidden revision '6efa171f091b' was rewritten as: d047485b3896) $ hg book -f bm $ hg up @@ -532,7 +554,7 @@ Test that 5 is detected as a valid destination from 1 $ hg up --quiet 0 # we should be able to update to 3 directly $ hg up --quiet --hidden 3 # but not implemented yet. - updating to a hidden changeset 6efa171f091b + updated to hidden changeset 6efa171f091b (hidden revision '6efa171f091b' was rewritten as: d047485b3896) $ hg up 5 1 files updated, 0 files merged, 0 files removed, 0 files unresolved