[PATCH 1 of 2 v2] update: add flag to require update destination
Ryan McElroy
rm at fb.com
Wed Mar 15 00:56:15 UTC 2017
# HG changeset patch
# User Ryan McElroy <rmcelroy at fb.com>
# Date 1489538598 25200
# Tue Mar 14 17:43:18 2017 -0700
# Node ID 2dc26c57e60e7e7bf46a276e8a498a9746bd9271
# Parent 1c48a8278b2f015fca607dfc652823560a5ac580
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.
diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -5345,6 +5345,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 <<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
More information about the Mercurial-devel
mailing list