diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -5349,6 +5349,11 @@ def update(ui, repo, node=None, rev=None if rev and node: raise error.Abort(_("please specify just one revision")) + if ui.configbool('commands', 'update.requiredest', False): + if not node and not rev and not date: + raise error.Abort(_('you must specify a destination'), + hint=_('for example: hg update ".::"')) + if rev is None or rev == '': rev = node diff --git a/mercurial/help/config.txt b/mercurial/help/config.txt --- a/mercurial/help/config.txt +++ b/mercurial/help/config.txt @@ -414,6 +414,15 @@ effect and style see :hg:`help color`. a different color mode than the pager (activated via the "pager" extension). +``commands`` +---------- + +``update.requiredest`` + Require that the user pass a destination when running ``hg update``. + For example, ``hg update .::`` will be allowed, but a plain ``hg update`` + will be disallowed. + (default: False) + ``committemplate`` ------------------ diff --git a/tests/test-update-names.t b/tests/test-update-names.t --- a/tests/test-update-names.t +++ b/tests/test-update-names.t @@ -88,3 +88,19 @@ Test that warning is printed if cwd is d (consider changing to repo root: $TESTTMP/r1/r4) #endif + + $ cd $TESTTMP + $ cat >> $HGRCPATH < [commands] + > update.requiredest = True + > EOF + $ hg init dest + $ cd dest + $ echo a >> a + $ hg commit -qAm aa + $ hg up + abort: you must specify a destination + (for example: hg update ".::") + [255] + $ hg up . + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved