mercurial/commands.py
changeset 2641 46182568b4ce
parent 2639 001703ec311d
child 2642 f47432ae5376
--- a/mercurial/commands.py
+++ b/mercurial/commands.py
@@ -2651,7 +2651,7 @@ def tag(ui, repo, name, rev_=None, **opt
     very useful to compare different revision, to go back to significant
     earlier versions or to mark branch points as releases, etc.
 
-    If no revision is given, the tip is used.
+    If no revision is given, the parent of the working directory is used.
 
     To facilitate version control, distribution, and merging of tags,
     they are stored as a file named ".hgtags" which is managed
@@ -2671,7 +2671,12 @@ def tag(ui, repo, name, rev_=None, **opt
     if rev_:
         r = hex(repo.lookup(rev_))
     else:
-        r = hex(repo.changelog.tip())
+        p1, p2 = repo.dirstate.parents()
+        if p1 == nullid:
+            raise util.Abort(_('no revision to tag'))
+        if p2 != nullid:
+            raise util.Abort(_('outstanding uncommited merges'))
+        r = hex(p1)
 
     repo.tag(name, r, opts['local'], opts['message'], opts['user'],
              opts['date'])