update: add flag to require update destination
authorRyan McElroy <rmcelroy@fb.com>
Tue, 14 Mar 2017 17:43:18 -0700
changeset 31563 79d98e1b21a7
parent 31562 448acdee9161
child 31564 13dc00c233b7
update: add flag to require update destination In some mercurial workflows, the default destination for update does not always work well and can lead to confusing behavior. With this flag enabled, every update command will require passing an explicit destination, eliminating this confusion.
mercurial/commands.py
mercurial/help/config.txt
tests/test-update-names.t
--- a/mercurial/commands.py	Mon Mar 20 11:38:37 2017 +0900
+++ b/mercurial/commands.py	Tue Mar 14 17:43:18 2017 -0700
@@ -5349,6 +5349,11 @@
     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
 
--- a/mercurial/help/config.txt	Mon Mar 20 11:38:37 2017 +0900
+++ b/mercurial/help/config.txt	Tue Mar 14 17:43:18 2017 -0700
@@ -414,6 +414,15 @@
     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``
 ------------------
 
--- a/tests/test-update-names.t	Mon Mar 20 11:38:37 2017 +0900
+++ b/tests/test-update-names.t	Tue Mar 14 17:43:18 2017 -0700
@@ -88,3 +88,19 @@
   (consider changing to repo root: $TESTTMP/r1/r4)
 
 #endif
+
+  $ cd $TESTTMP
+  $ cat >> $HGRCPATH <<EOF
+  > [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