D6989: push: support config option to require revs be specified when running push
spectral (Kyle Lippincott)
phabricator at mercurial-scm.org
Thu Oct 10 10:12:13 EDT 2019
Closed by commit rHG5617b748aad8: push: support config option to require revs be specified when running push (authored by spectral).
This revision was automatically updated to reflect the committed changes.
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D6989?vs=17011&id=17044
CHANGES SINCE LAST ACTION
https://phab.mercurial-scm.org/D6989/new/
REVISION DETAIL
https://phab.mercurial-scm.org/D6989
AFFECTED FILES
mercurial/commands.py
mercurial/configitems.py
mercurial/help/config.txt
tests/test-push.t
CHANGE DETAILS
diff --git a/tests/test-push.t b/tests/test-push.t
--- a/tests/test-push.t
+++ b/tests/test-push.t
@@ -348,3 +348,55 @@
[255]
$ [ ! -f owned ] || echo 'you got owned'
+
+Test `commands.push.require-revs`
+---------------------------------
+
+ $ hg clone -q test-revflag test-require-revs-source
+ $ hg init test-require-revs-dest
+ $ cd test-require-revs-source
+ $ cat >> .hg/hgrc << EOF
+ > [paths]
+ > default = ../test-require-revs-dest
+ > [commands]
+ > push.require-revs=1
+ > EOF
+ $ hg push
+ pushing to $TESTTMP/test-require-revs-dest
+ abort: no revisions specified to push
+ (did you mean "hg push -r ."?)
+ [255]
+ $ hg push -r 0
+ pushing to $TESTTMP/test-require-revs-dest
+ searching for changes
+ adding changesets
+ adding manifests
+ adding file changes
+ added 1 changesets with 1 changes to 1 files
+ $ hg bookmark -r 0 push-this-bookmark
+(test that -B (bookmark) works for specifying "revs")
+ $ hg push -B push-this-bookmark
+ pushing to $TESTTMP/test-require-revs-dest
+ searching for changes
+ no changes found
+ exporting bookmark push-this-bookmark
+ [1]
+(test that -b (branch) works for specifying "revs")
+ $ hg push -b default
+ pushing to $TESTTMP/test-require-revs-dest
+ searching for changes
+ abort: push creates new remote head [0-9a-f]+! (re)
+ (merge or see 'hg help push' for details about pushing new heads)
+ [255]
+(demonstrate that even though we don't have anything to exchange, we're still
+showing the error)
+ $ hg push
+ pushing to $TESTTMP/test-require-revs-dest
+ abort: no revisions specified to push
+ (did you mean "hg push -r ."?)
+ [255]
+ $ hg push --config paths.default:pushrev=0
+ pushing to $TESTTMP/test-require-revs-dest
+ searching for changes
+ no changes found
+ [1]
diff --git a/mercurial/help/config.txt b/mercurial/help/config.txt
--- a/mercurial/help/config.txt
+++ b/mercurial/help/config.txt
@@ -442,6 +442,14 @@
Show status of files in the working directory after successful commit.
(default: False)
+``push.require-revs``
+ Require revisions to push be specified using one or more mechanisms such as
+ specifying them positionally on the command line, using ``-r``, ``-b``,
+ and/or ``-B`` on the command line, or using ``paths.<path>:pushrev`` in the
+ configuration. If this is enabled and revisions are not specified, the
+ command aborts.
+ (default: False)
+
``resolve.confirm``
Confirm before performing action if no filename is passed.
(default: False)
diff --git a/mercurial/configitems.py b/mercurial/configitems.py
--- a/mercurial/configitems.py
+++ b/mercurial/configitems.py
@@ -228,6 +228,9 @@
b'commands', b'grep.all-files', default=False, experimental=True,
)
coreconfigitem(
+ b'commands', b'push.require-revs', default=False,
+)
+coreconfigitem(
b'commands', b'resolve.confirm', default=False,
)
coreconfigitem(
diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -5615,6 +5615,9 @@
raise error.Abort(
_(b'default push revset for path evaluates to an empty set')
)
+ elif ui.configbool(b'commands', b'push.require-revs'):
+ raise error.Abort(_(b'no revisions specified to push'),
+ hint=_(b'did you mean "hg push -r ."?'))
repo._subtoppath = dest
try:
To: spectral, #hg-reviewers, pulkit
Cc: pulkit, mharbison72, indygreg, mercurial-devel
More information about the Mercurial-devel
mailing list