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