D7620: merge: add commands.merge.require-rev to require an argument to hg merge
spectral (Kyle Lippincott)
phabricator at mercurial-scm.org
Mon Dec 16 01:32:33 EST 2019
Closed by commit rHG8caec25f5d8f: merge: add commands.merge.require-rev to require an argument to hg merge (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/D7620?vs=18722&id=18742
CHANGES SINCE LAST ACTION
https://phab.mercurial-scm.org/D7620/new/
REVISION DETAIL
https://phab.mercurial-scm.org/D7620
AFFECTED FILES
mercurial/commands.py
mercurial/configitems.py
mercurial/helptext/config.txt
tests/test-merge-default.t
tests/test-merge-tools.t
CHANGE DETAILS
diff --git a/tests/test-merge-tools.t b/tests/test-merge-tools.t
--- a/tests/test-merge-tools.t
+++ b/tests/test-merge-tools.t
@@ -4,6 +4,8 @@
$ cat >> $HGRCPATH << EOF
> [ui]
> merge=
+ > [commands]
+ > merge.require-rev=True
> EOF
$ hg init repo
$ cd repo
@@ -1908,6 +1910,7 @@
0 files updated, 0 files merged, 0 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg merge --abort' to abandon
[1]
+(Testing that commands.merge.require-rev doesn't break --abort)
$ hg merge --abort -q
(for ui.merge, ignored unintentionally)
diff --git a/tests/test-merge-default.t b/tests/test-merge-default.t
--- a/tests/test-merge-default.t
+++ b/tests/test-merge-default.t
@@ -44,9 +44,10 @@
(run 'hg heads .' to see heads, specify rev with -r)
[255]
-Should succeed:
+Should succeed (we're specifying commands.merge.require-rev=True just to test
+that it allows merge to succeed if we specify a revision):
- $ hg merge 2
+ $ hg merge 2 --config commands.merge.require-rev=True
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
$ hg id -Tjson
@@ -63,6 +64,13 @@
]
$ hg commit -mm1
+Should fail because we didn't specify a revision (even though it would have
+succeeded without this):
+
+ $ hg merge --config commands.merge.require-rev=True
+ abort: configuration requires specifying revision to merge with
+ [255]
+
Should succeed - 2 heads:
$ hg merge -P
@@ -88,6 +96,13 @@
}
]
+Should fail because we didn't specify a revision (even though it would have
+failed without this due to being on tip, but this check comes first):
+
+ $ hg merge --config commands.merge.require-rev=True
+ abort: configuration requires specifying revision to merge with
+ [255]
+
Should fail because at tip:
$ hg merge
diff --git a/mercurial/helptext/config.txt b/mercurial/helptext/config.txt
--- a/mercurial/helptext/config.txt
+++ b/mercurial/helptext/config.txt
@@ -442,6 +442,12 @@
Show status of files in the working directory after successful commit.
(default: False)
+``merge.require-rev``
+ Require that the revision to merge the current commit with be specified on
+ the command line. If this is enabled and a revision is not specified, the
+ command aborts.
+ (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``,
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'merge.require-rev', default=False,
+)
+coreconfigitem(
b'commands', b'push.require-revs', default=False,
)
coreconfigitem(
diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -4888,6 +4888,13 @@
node = scmutil.revsingle(repo, node).node()
if not node and not abort:
+ if ui.configbool(b'commands', b'merge.require-rev'):
+ raise error.Abort(
+ _(
+ b'configuration requires specifying revision to merge '
+ b'with'
+ )
+ )
node = repo[destutil.destmerge(repo)].node()
if opts.get(b'preview'):
To: spectral, #hg-reviewers, dlax, pulkit
Cc: dlax, mercurial-devel
More information about the Mercurial-devel
mailing list