Rev 6121: (jelmer) bzr tag no longer errors if a tag exists but has the same target. in file:///home/pqm/archives/thelove/bzr/%2Btrunk/

Canonical.com Patch Queue Manager pqm at pqm.ubuntu.com
Thu Sep 1 18:11:47 UTC 2011


At file:///home/pqm/archives/thelove/bzr/%2Btrunk/

------------------------------------------------------------
revno: 6121 [merge]
revision-id: pqm at pqm.ubuntu.com-20110901181138-l9mi0miijmx29wm9
parent: pqm at pqm.ubuntu.com-20110901130430-vwqqnibolw6bewdf
parent: jelmer at samba.org-20110831152511-6q3p5ce4wa2s27up
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Thu 2011-09-01 18:11:38 +0000
message:
  (jelmer) bzr tag no longer errors if a tag exists but has the same target.
   (Jelmer Vernooij)
modified:
  bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
  bzrlib/tests/blackbox/test_tags.py test_tags.py-20070116132048-5h4qak2cm22jlb9e-1
  doc/en/release-notes/bzr-2.5.txt bzr2.5.txt-20110708125756-587p0hpw7oke4h05-1
=== modified file 'bzrlib/builtins.py'
--- a/bzrlib/builtins.py	2011-08-28 10:24:01 +0000
+++ b/bzrlib/builtins.py	2011-08-31 15:25:11 +0000
@@ -5621,10 +5621,17 @@
                 if tag_name is None:
                     raise errors.BzrCommandError(
                         "Please specify a tag name.")
-            if (not force) and branch.tags.has_tag(tag_name):
+            try:
+                existing_target = branch.tags.lookup_tag(tag_name)
+            except errors.NoSuchTag:
+                existing_target = None
+            if not force and existing_target not in (None, revision_id):
                 raise errors.TagAlreadyExists(tag_name)
-            branch.tags.set_tag(tag_name, revision_id)
-            note('Created tag %s.' % tag_name)
+            if existing_target == revision_id:
+                note('Tag %s already exists for that revision.' % tag_name)
+            else:
+                branch.tags.set_tag(tag_name, revision_id)
+                note('Created tag %s.' % tag_name)
 
 
 class cmd_tags(Command):

=== modified file 'bzrlib/tests/blackbox/test_tags.py'
--- a/bzrlib/tests/blackbox/test_tags.py	2011-06-10 15:06:41 +0000
+++ b/bzrlib/tests/blackbox/test_tags.py	2011-08-31 15:25:11 +0000
@@ -17,7 +17,6 @@
 """Tests for commands related to tags"""
 
 from bzrlib import (
-    branchbuilder,
     tag,
     transform,
     )
@@ -75,11 +74,25 @@
         # can also delete an existing tag
         out, err = self.run_bzr('tag --delete -d branch tag2')
         # cannot replace an existing tag normally
-        out, err = self.run_bzr('tag -d branch NEWTAG', retcode=3)
+        out, err = self.run_bzr('tag -d branch NEWTAG -r0', retcode=3)
         self.assertContainsRe(err, 'Tag NEWTAG already exists\\.')
         # ... but can if you use --force
         out, err = self.run_bzr('tag -d branch NEWTAG --force')
 
+    def test_tag_same_revision(self):
+        t = self.make_branch_and_tree('branch')
+        t.commit(allow_pointless=True, message='initial commit',
+            rev_id='first-revid')
+        t.commit(allow_pointless=True, message='second commit',
+            rev_id='second-revid')
+        out, err = self.run_bzr('tag -rrevid:first-revid -d branch NEWTAG')
+        out, err = self.run_bzr('tag -rrevid:first-revid -d branch NEWTAG')
+        self.assertContainsRe(err,
+            'Tag NEWTAG already exists for that revision\\.')
+        out, err = self.run_bzr('tag -rrevid:second-revid -d branch NEWTAG',
+            retcode=3)
+        self.assertContainsRe(err, 'Tag NEWTAG already exists\\.')
+
     def test_tag_delete_requires_name(self):
         out, err = self.run_bzr('tag -d branch', retcode=3)
         self.assertContainsRe(err, 'Please specify a tag name\\.')

=== modified file 'doc/en/release-notes/bzr-2.5.txt'
--- a/doc/en/release-notes/bzr-2.5.txt	2011-09-01 13:04:30 +0000
+++ b/doc/en/release-notes/bzr-2.5.txt	2011-09-01 18:11:38 +0000
@@ -102,6 +102,9 @@
   Entering an empty commit message in the message editor still triggers
   an error. (Jelmer Vernooij)
 
+* ``bzr tag`` no longer errors if a tag already exists but refers to the
+  same revision. (Jelmer Vernooij)
+
 * ``bzr uncommit`` will now remove tags that refer to removed revisions.
   The ``--keep-tags`` option can be used to prevent this behaviour.
   (Jelmer Vernooij, #605814)




More information about the bazaar-commits mailing list