bookmarks: abort when incompatible options are used (
issue3663)
Options like --delete and --rename are incompatible with each
other. In this case we abort. We do not abort if the result is a nullop.
Nullops are: '--delete --inactive', '--delete --force'.
--- a/mercurial/commands.py Wed Oct 17 08:44:49 2012 +0200
+++ b/mercurial/commands.py Wed Oct 17 11:50:47 2012 +0200
@@ -807,6 +807,13 @@
raise util.Abort(
_("a bookmark cannot have the name of an existing branch"))
+ if delete and rename:
+ raise util.Abort(_("--delete and --rename are incompatible"))
+ if delete and rev:
+ raise util.Abort(_("--rev is incompatible with --delete"))
+ if rename and rev:
+ raise util.Abort(_("--rev is incompatible with --rename"))
+
if delete:
if mark is None:
raise util.Abort(_("bookmark name required"))
--- a/tests/test-bookmarks.t Wed Oct 17 08:44:49 2012 +0200
+++ b/tests/test-bookmarks.t Wed Oct 17 11:50:47 2012 +0200
@@ -242,6 +242,20 @@
abort: a bookmark cannot have the name of an existing branch
[255]
+incompatible options
+
+ $ hg bookmark -m Y -d Z
+ abort: --delete and --rename are incompatible
+ [255]
+
+ $ hg bookmark -r 1 -d Z
+ abort: --rev is incompatible with --delete
+ [255]
+
+ $ hg bookmark -r 1 -m Z Y
+ abort: --rev is incompatible with --rename
+ [255]
+
force bookmark with existing name
$ hg bookmark -f Z