[PATCH 2 of 2] tag: fix uncommitted merge check and error message (issue2542)

Kevin Bullock kbullock+mercurial at ringworld.org
Mon Dec 13 21:42:51 CST 2010


# HG changeset patch
# User Adrian Buehlmann <adrian at cadifra.com>
# Date 1291705374 -3600
# Branch stable
# Node ID 08021c74f46ed05b9739b3cea8ecd35e10c17645
# Parent  55ee5a2cc1f5f62cc3284d900e21d40d23d5a3ff
tag: fix uncommitted merge check and error message (issue2542)

This patch corrects the check for tagging on an uncommitted merge. We
should never commit a new tag changeset on an uncommitted merge, whether
or not --rev is specified. It also changes the error message from:

  abort: cannot partially commit a merge (do not specify files or patterns)

to the much more accurate (and terse):

  abort: uncommitted merge

Local tags are ok.

diff --git a/mercurial/commands.py b/mercurial/commands.py
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -3712,9 +3712,8 @@
             if n in repo.tags():
                 raise util.Abort(_('tag \'%s\' already exists '
                                    '(use -f to force)') % n)
-    if not rev_ and repo.dirstate.parents()[1] != nullid:
-        raise util.Abort(_('uncommitted merge - please provide a '
-                           'specific revision'))
+    if not opts.get('local') and repo.dirstate.parents()[1] != nullid:
+        raise util.Abort(_('uncommitted merge'))
     r = repo[rev_].node()
 
     if not message:
diff --git a/tests/test-tag.t b/tests/test-tag.t
--- a/tests/test-tag.t
+++ b/tests/test-tag.t
@@ -208,3 +208,42 @@
   ? editor
   $ hg tag --local baz
   $ hg revert --no-backup .hgtags
+
+tagging with a uncommitted merge
+
+  $ hg heads -q
+  11:7d32ded1f932
+  8:2bba354f91af
+  5:b4bb47aaff09
+  $ hg up 8
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg st -A
+  ? .hgtags.orig
+  ? editor
+  C .hgtags
+  C a
+  $ hg merge --tool internal:local 5
+  0 files updated, 1 files merged, 0 files removed, 0 files unresolved
+  (branch merge, don't forget to commit)
+  $ hg diff
+
+  $ hg tag t1
+  abort: uncommitted merge
+  [255]
+  $ hg tag --rev 1 t2
+  abort: uncommitted merge
+  [255]
+  $ hg tag --rev 1 --local t3
+  $ hg tags -v
+  tip                               11:7d32ded1f932
+  baz                               11:7d32ded1f932 local
+  custom-tag                        10:e51b312ec2b1
+  tag-and-branch-same-name           9:1ba9e63eb5b8
+  newline                            7:a0eea09de1ee
+  localnewline                       6:c2899151f4e7 local
+  gawk                               2:336fccc858a4
+  t3                                 1:d4f0d2909abc local
+  bleah1                             1:d4f0d2909abc local
+  foobar                             0:acb14030fe0a
+  bleah0                             0:acb14030fe0a
+  bleah                              0:acb14030fe0a


More information about the Mercurial-devel mailing list