Rev 2439: (erik, bialix, r=john) Tags in long log in file:///home/pqm/archives/thelove/bzr/%2Btrunk/
Canonical.com Patch Queue Manager
pqm at pqm.ubuntu.com
Sat Apr 21 15:47:16 BST 2007
At file:///home/pqm/archives/thelove/bzr/%2Btrunk/
------------------------------------------------------------
revno: 2439
revision-id: pqm at pqm.ubuntu.com-20070421144713-wrfv38pfywoeg408
parent: pqm at pqm.ubuntu.com-20070420154033-kkrk7tn575z1o491
parent: bialix at ukr.net-20070421141508-8b2nqv6i2a0feuex
committer: Canonical.com Patch Queue Manager<pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Sat 2007-04-21 15:47:13 +0100
message:
(erik, bialix, r=john) Tags in long log
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/log.py log.py-20050505065812-c40ce11702fe5fb1
bzrlib/tag.py tag.py-20070212110532-91cw79inah2cfozx-1
bzrlib/tests/blackbox/test_log.py test_log.py-20060112090212-78f6ea560c868e24
bzrlib/tests/branch_implementations/test_tags.py test_tags.py-20070212110545-w2s799hm2jlbsmg5-1
------------------------------------------------------------
revno: 2388.1.13
merged: bialix at ukr.net-20070421141508-8b2nqv6i2a0feuex
parent: bialix at ukr.net-20070419200150-yyltrlev3s65w9h9
parent: pqm at pqm.ubuntu.com-20070420154033-kkrk7tn575z1o491
committer: Alexander Belchenko <bialix at ukr.net>
branch nick: erik.tags
timestamp: Sat 2007-04-21 17:15:08 +0300
message:
merge bzr.dev
------------------------------------------------------------
revno: 2388.1.12
merged: bialix at ukr.net-20070419200150-yyltrlev3s65w9h9
parent: bialix at ukr.net-20070419192839-p964uu06n6vbjgrt
committer: Alexander Belchenko <bialix at ukr.net>
branch nick: erik.tags
timestamp: Thu 2007-04-19 23:01:50 +0300
message:
direct test for tags.get_reverse_tag_dict()
------------------------------------------------------------
revno: 2388.1.11
merged: bialix at ukr.net-20070419192839-p964uu06n6vbjgrt
parent: bialix at ukr.net-20070412111226-acm9l3u82mxajriw
committer: Alexander Belchenko <bialix at ukr.net>
branch nick: erik.tags
timestamp: Thu 2007-04-19 22:28:39 +0300
message:
changes after John's review
------------------------------------------------------------
revno: 2388.1.10
merged: bialix at ukr.net-20070412111226-acm9l3u82mxajriw
parent: erik at bagfors.nu-20070411011800-7gxbox8gbqrdp40i
committer: Alexander Belchenko <bialix at ukr.net>
branch nick: erik.tags
timestamp: Thu 2007-04-12 14:12:26 +0300
message:
Slightly reworked: use None instead of [] as default tags list; PEP-8
------------------------------------------------------------
revno: 2388.1.9
merged: erik at bagfors.nu-20070411011800-7gxbox8gbqrdp40i
parent: erik at bagfors.nu-20070411010457-vgajajul01xb9hl6
committer: Erik Bagfors <erik at bagfors.nu>
branch nick: bzr.taglogs
timestamp: Wed 2007-04-11 03:18:00 +0200
message:
test for merges with tags in log
------------------------------------------------------------
revno: 2388.1.8
merged: erik at bagfors.nu-20070411010457-vgajajul01xb9hl6
parent: erik at bagfors.nu-20070411001329-ngzhv000ur5tffmn
committer: Erik Bagfors <erik at bagfors.nu>
branch nick: bzr.taglogs
timestamp: Wed 2007-04-11 03:04:57 +0200
message:
Redo based on input from Alexander
------------------------------------------------------------
revno: 2388.1.7
merged: erik at bagfors.nu-20070411001329-ngzhv000ur5tffmn
parent: erik at bagfors.nu-20070409231340-2pak5i4mxsby70ir
committer: Erik Bagfors <erik at bagfors.nu>
branch nick: bzr.taglogs
timestamp: Wed 2007-04-11 02:13:29 +0200
message:
use , to separate tags in log
------------------------------------------------------------
revno: 2388.1.6
merged: erik at bagfors.nu-20070409231340-2pak5i4mxsby70ir
parent: erik at bagfors.nu-20070405095117-ndglm72iuaxpi6u8
committer: Erik Bagfors <erik at bagfors.nu>
branch nick: bzr.taglogs
timestamp: Tue 2007-04-10 01:13:40 +0200
message:
change order of log headers
------------------------------------------------------------
revno: 2388.1.5
merged: erik at bagfors.nu-20070405095117-ndglm72iuaxpi6u8
parent: erik at bagfors.nu-20070404222123-8bg6539vy9suln32
parent: pqm at pqm.ubuntu.com-20070405073143-8fa894c829ab5e50
committer: Erik Bagfors <erik at bagfors.nu>
branch nick: bzr.taglogs
timestamp: Thu 2007-04-05 11:51:17 +0200
message:
[merge] bzr.dev
------------------------------------------------------------
revno: 2388.1.4
merged: erik at bagfors.nu-20070404222123-8bg6539vy9suln32
parent: erik at bagfors.nu-20070404222059-bo7nbo782gkvqfhb
committer: Erik Bagfors <erik at bagfors.nu>
branch nick: bzr.taglogs
timestamp: Thu 2007-04-05 00:21:23 +0200
message:
added NEWS entry
------------------------------------------------------------
revno: 2388.1.3
merged: erik at bagfors.nu-20070404222059-bo7nbo782gkvqfhb
parent: erik at bagfors.nu-20070404192802-pmu7ppsj4v8idg2f
committer: Erik Bagfors <erik at bagfors.nu>
branch nick: bzr.taglogs
timestamp: Thu 2007-04-05 00:20:59 +0200
message:
tests for tags in log output
------------------------------------------------------------
revno: 2388.1.2
merged: erik at bagfors.nu-20070404192802-pmu7ppsj4v8idg2f
parent: erik at bagfors.nu-20070404192718-iqk7l4s93rnqnfad
committer: Erik Bagfors <erik at bagfors.nu>
branch nick: bzr.taglogs
timestamp: Wed 2007-04-04 21:28:02 +0200
message:
Use the reverse tag dict to show tags in log output
------------------------------------------------------------
revno: 2388.1.1
merged: erik at bagfors.nu-20070404192718-iqk7l4s93rnqnfad
parent: pqm at pqm.ubuntu.com-20070330064022-bdce9356befc3795
committer: Erik Bagfors <erik at bagfors.nu>
branch nick: bzr.taglogs
timestamp: Wed 2007-04-04 21:27:18 +0200
message:
created reverse_tag_dict in tags.py
=== modified file 'NEWS'
--- a/NEWS 2007-04-20 15:40:33 +0000
+++ b/NEWS 2007-04-21 14:15:08 +0000
@@ -21,6 +21,9 @@
documentation, and the bzr.1 man page also include this information.
(Robert Collins)
+ * Tags are now included in logs, that use the long log formatter.
+ (Erik BÃ¥gfors, Alexander Belchenko)
+
INTERNALS:
* bzrlib API compatability with 0.8 has been dropped, cleaning up some
=== modified file 'bzrlib/log.py'
--- a/bzrlib/log.py 2007-02-07 03:09:58 +0000
+++ b/bzrlib/log.py 2007-04-19 19:28:39 +0000
@@ -224,6 +224,12 @@
view_revisions = list(get_view_revisions(mainline_revs, rev_nos, branch,
direction, include_merges=include_merges))
+ use_tags = getattr(lf, 'supports_tags', False)
+ if use_tags:
+ rev_tag_dict = {}
+ if branch.supports_tags():
+ rev_tag_dict = branch.tags.get_reverse_tag_dict()
+
def iter_revisions():
# r = revision, n = revno, d = merge depth
revision_ids = [r for r, n, d in view_revisions]
@@ -257,21 +263,28 @@
if merge_depth == 0:
# a mainline revision.
-
+
if specific_fileid:
if not delta.touches_file_id(specific_fileid):
continue
-
+
if not verbose:
# although we calculated it, throw it away without display
delta = None
- lf.show(revno, rev, delta)
+ if use_tags:
+ lf.show(revno, rev, delta, rev_tag_dict.get(rev_id))
+ else:
+ lf.show(revno, rev, delta)
else:
if show_merge_revno is None:
lf.show_merge(rev, merge_depth)
else:
- lf.show_merge_revno(rev, merge_depth, revno)
+ if use_tags:
+ lf.show_merge_revno(rev, merge_depth, revno,
+ rev_tag_dict.get(rev_id))
+ else:
+ lf.show_merge_revno(rev, merge_depth, revno)
def get_view_revisions(mainline_revs, rev_nos, branch, direction,
@@ -340,28 +353,38 @@
def short_committer(self, rev):
return re.sub('<.*@.*>', '', rev.committer).strip(' ')
-
-
+
+
class LongLogFormatter(LogFormatter):
- def show(self, revno, rev, delta):
- return self._show_helper(revno=revno, rev=rev, delta=delta)
+
+ supports_tags = True # must exist and be True
+ # if this log formatter support tags.
+ # .show() and .show_merge_revno() must then accept
+ # the 'tags'-argument with list of tags
+
+ def show(self, revno, rev, delta, tags=None):
+ return self._show_helper(revno=revno, rev=rev, delta=delta, tags=tags)
@deprecated_method(zero_eleven)
def show_merge(self, rev, merge_depth):
- return self._show_helper(rev=rev, indent=' '*merge_depth, merged=True, delta=None)
+ return self._show_helper(rev=rev, indent=' '*merge_depth,
+ merged=True, delta=None)
- def show_merge_revno(self, rev, merge_depth, revno):
+ def show_merge_revno(self, rev, merge_depth, revno, tags=None):
"""Show a merged revision rev, with merge_depth and a revno."""
return self._show_helper(rev=rev, revno=revno,
- indent=' '*merge_depth, merged=True, delta=None)
+ indent=' '*merge_depth, merged=True, delta=None, tags=tags)
- def _show_helper(self, rev=None, revno=None, indent='', merged=False, delta=None):
+ def _show_helper(self, rev=None, revno=None, indent='', merged=False,
+ delta=None, tags=None):
"""Show a revision, either merged or not."""
from bzrlib.osutils import format_date
to_file = self.to_file
print >>to_file, indent+'-' * 60
if revno is not None:
print >>to_file, indent+'revno:', revno
+ if tags:
+ print >>to_file, indent+'tags: %s' % (', '.join(tags))
if merged:
print >>to_file, indent+'merged:', rev.revision_id
elif self.show_ids:
@@ -370,6 +393,7 @@
for parent_id in rev.parent_ids:
print >>to_file, indent+'parent:', parent_id
print >>to_file, indent+'committer:', rev.committer
+
try:
print >>to_file, indent+'branch nick: %s' % \
rev.properties['branch-nick']
=== modified file 'bzrlib/tag.py'
--- a/bzrlib/tag.py 2007-02-26 05:29:05 +0000
+++ b/bzrlib/tag.py 2007-04-19 19:28:39 +0000
@@ -112,6 +112,18 @@
finally:
self.branch.unlock()
+ def get_reverse_tag_dict(self):
+ """Returns a dict with revisions as keys
+ and a list of tags for that revision as value"""
+ d = self.get_tag_dict()
+ rev = {}
+ for key in d:
+ try:
+ rev[d[key]].append(key)
+ except KeyError:
+ rev[d[key]] = [key]
+ return rev
+
def delete_tag(self, tag_name):
"""Delete a tag definition.
"""
=== modified file 'bzrlib/tests/blackbox/test_log.py'
--- a/bzrlib/tests/blackbox/test_log.py 2007-02-09 18:23:21 +0000
+++ b/bzrlib/tests/blackbox/test_log.py 2007-04-19 19:28:39 +0000
@@ -27,8 +27,11 @@
class TestLog(ExternalBase):
- def _prepare(self):
- self.runbzr("init")
+ def _prepare(self, format=None):
+ if format:
+ self.runbzr("init --format="+format)
+ else:
+ self.runbzr("init")
self.build_tree(['hello.txt', 'goodbye.txt', 'meep.txt'])
self.runbzr("add hello.txt")
self.runbzr("commit -m message1 hello.txt")
@@ -116,6 +119,36 @@
self.assertContainsRe(
err, 'Path does not have any revision history: does-not-exist')
+ def test_log_with_tags(self):
+ self._prepare(format='dirstate-tags')
+ self.runbzr('tag -r1 tag1')
+ self.runbzr('tag -r1 tag1.1')
+ self.runbzr('tag tag3')
+
+ log = self.runbzr("log -r-1")[0]
+ self.assertTrue('tags: tag3' in log)
+
+ log = self.runbzr("log -r1")[0]
+ # I guess that we can't know the order of tags in the output
+ # since dicts are unordered, need to check both possibilities
+ self.assertContainsRe(log, r'tags: (tag1, tag1\.1|tag1\.1, tag1)')
+
+ def test_merged_log_with_tags(self):
+ os.mkdir('branch1')
+ os.chdir('branch1')
+ self._prepare(format='dirstate-tags')
+ os.chdir('..')
+ self.runbzr('branch branch1 branch2')
+ os.chdir('branch1')
+ self.runbzr('commit -m foobar --unchanged')
+ self.runbzr('tag tag1')
+ os.chdir('../branch2')
+ self.runbzr('merge ../branch1')
+ self.runbzr('commit -m merge_branch_1')
+ log = self.runbzr("log -r-1")[0]
+ self.assertContainsRe(log, r' tags: tag1')
+
+
class TestLogMerges(ExternalBase):
def test_merges_are_indented_by_level(self):
=== modified file 'bzrlib/tests/branch_implementations/test_tags.py'
--- a/bzrlib/tests/branch_implementations/test_tags.py 2007-02-26 05:29:05 +0000
+++ b/bzrlib/tests/branch_implementations/test_tags.py 2007-04-19 20:01:50 +0000
@@ -71,6 +71,17 @@
self.assertTrue(b.tags.has_tag('tag-name'))
self.assertFalse(b.tags.has_tag('imaginary'))
+ def test_reverse_tag_dict(self):
+ b = self.make_branch('b')
+ b.tags.set_tag('tag-name', 'target-revid-1')
+ b.tags.set_tag('other-name', 'target-revid-2')
+ # then reopen the branch and check reverse map id->tags list
+ b = Branch.open('b')
+ self.assertEqual(b.tags.get_reverse_tag_dict(),
+ {'target-revid-1': ['tag-name'],
+ 'target-revid-2': ['other-name'],
+ })
+
def test_no_such_tag(self):
b = self.make_branch('b')
try:
More information about the bazaar-commits
mailing list