[MERGE] Let revno and revision-info tell me about the tree as well as the branch
Matthew D. Fuller
fullermd at over-yonder.net
Fri Jun 5 03:43:08 BST 2009
This may not be excessively clean, but it works.
--
Matthew Fuller (MF4839) | fullermd at over-yonder.net
Systems/Network Administrator | http://www.over-yonder.net/~fullermd/
On the Internet, nobody can hear you scream.
-------------- next part --------------
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: fullermd at over-yonder.net-20090605023930-\
# mceahwdc7pbaaph1
# target_branch: ../bzr.dev/
# testament_sha1: c525540137625285f972162fc7063a68cd8209d5
# timestamp: 2009-06-04 21:40:31 -0500
# base_revision_id: pqm at pqm.ubuntu.com-20090604210544-x6j63s03knqk7qfg
#
# Begin patch
=== modified file 'NEWS'
--- NEWS 2009-06-04 21:05:44 +0000
+++ NEWS 2009-06-05 02:39:30 +0000
@@ -23,6 +23,10 @@
* mail_client=claws now supports --body (and message body hooks). Also uses
configured from address. (Barry Warsaw)
+* ``bzr revno`` and ``bzr revision-info`` now have a ``--tree`` option to
+ show revision info for the working tree instead of the branch.
+ (Matthew Fuller)
+
Improvements
************
=== modified file 'bzrlib/builtins.py'
--- bzrlib/builtins.py 2009-06-02 09:18:26 +0000
+++ bzrlib/builtins.py 2009-06-05 02:33:08 +0000
@@ -474,11 +474,19 @@
_see_also = ['info']
takes_args = ['location?']
+ takes_options = [
+ Option('tree', help='Show revno of working tree'),
+ ]
@display_command
- def run(self, location=u'.'):
- self.outf.write(str(Branch.open_containing(location)[0].revno()))
- self.outf.write('\n')
+ def run(self, tree=False, location=u'.'):
+ branch = Branch.open_containing(location)[0]
+ if tree:
+ revid = WorkingTree.open_containing(location)[0]._last_revision()
+ revno = branch.revision_id_to_dotted_revno(revid)[0]
+ else:
+ revno = branch.revno()
+ self.outf.write(str(revno) + '\n')
class cmd_revision_info(Command):
@@ -494,10 +502,12 @@
short_name='d',
type=unicode,
),
+ Option('tree', help='Show revno of working tree'),
]
@display_command
- def run(self, revision=None, directory=u'.', revision_info_list=[]):
+ def run(self, revision=None, directory=u'.', tree=False,
+ revision_info_list=[]):
revs = []
if revision is not None:
@@ -509,7 +519,12 @@
b = Branch.open_containing(directory)[0]
if len(revs) == 0:
- revs.append(RevisionSpec.from_string('-1'))
+ if tree:
+ wt = WorkingTree.open_containing(directory)[0]
+ revs.append(RevisionSpec.from_string('revid:' + \
+ wt._last_revision()))
+ else:
+ revs.append(RevisionSpec.from_string('-1'))
for rev in revs:
revision_id = rev.as_revision_id(b)
=== modified file 'bzrlib/tests/blackbox/test_revision_info.py'
--- bzrlib/tests/blackbox/test_revision_info.py 2009-03-23 14:59:43 +0000
+++ bzrlib/tests/blackbox/test_revision_info.py 2009-06-05 02:39:18 +0000
@@ -86,3 +86,17 @@
wt.commit('Commit one', rev_id='a at r-0-1')
self.check_output(' 1 a at r-0-1\n', 'revision-info -d branch')
+
+ def test_revision_info_tree(self):
+ # Make branch and checkout
+ wt = self.make_branch_and_tree('branch')
+ wt.commit('Commit one', rev_id='a at r-0-1')
+
+ # Make checkout and move the branch forward
+ self.run_bzr('checkout --lightweight branch checkout')
+ wt.commit('Commit two', rev_id='a at r-0-2')
+
+ # Make sure the checkout gives the right answer for branch and
+ # tree
+ self.check_output(' 2 a at r-0-2\n', 'revision-info -d checkout')
+ self.check_output(' 1 a at r-0-1\n', 'revision-info --tree -d checkout')
=== modified file 'bzrlib/tests/blackbox/test_revno.py'
--- bzrlib/tests/blackbox/test_revno.py 2009-03-23 14:59:43 +0000
+++ bzrlib/tests/blackbox/test_revno.py 2009-06-05 02:13:32 +0000
@@ -50,4 +50,24 @@
self.assertEquals(int(bzr('revno a')), 2)
self.assertEquals(int(bzr('revno a/baz')), 2)
+ def test_revno_tree(self):
+ # Make branch and checkout
+ os.mkdir('branch')
+ self.run_bzr('init branch')
+ self.run_bzr('checkout --lightweight branch checkout')
+
+ # Get the checkout out of date
+ self.build_tree(['branch/file'])
+ self.run_bzr('add branch/file')
+ self.run_bzr('commit -m mkfile branch')
+
+ # Make sure revno says we're on 1
+ out,err = self.run_bzr('revno checkout')
+ self.assertEqual('', err)
+ self.assertEqual('1\n', out)
+
+ # Make sure --tree knows it's still on 0
+ out,err = self.run_bzr('revno --tree checkout')
+ self.assertEqual('', err)
+ self.assertEqual('0\n', out)
# Begin bundle
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
/xdyRThQkEwS5w8=
More information about the bazaar
mailing list