changeset 10960:ca739acf1a98

commands: add more robust support for 'hg log -b' (issue2078) Fixes issue2078 and adds tests to cover various 'hg log -b' uses. This change adds a localrepo.lookupbranch(key, remote=None) function. This will look up the branch of the revision with the given key. The algorithm works like this: * If a remote repo is given and KEY is the name of a branch in that repo, return KEY. * If no remote repo is given and KEY is the name of a branch in the local repo object, return KEY. * Otherwise look up the revision with the identifier KEY in the local repo and return its branch. This change also makes 'hg log -b' use this new functionality and adds a few tests for it.
author Steve Losh <steve@stevelosh.com>
date Mon, 12 Apr 2010 19:33:25 -0400
parents d1f4657f55e4
children ce6d56b95f2e
files mercurial/commands.py mercurial/localrepo.py tests/test-log tests/test-log.out
diffstat 4 files changed, 90 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/commands.py	Mon Apr 19 16:47:44 2010 -0500
+++ b/mercurial/commands.py	Mon Apr 12 19:33:25 2010 -0400
@@ -2160,6 +2160,7 @@
         df = util.matchdate(opts["date"])
 
     opts['branch'] += opts.get('only_branch')
+    opts['branch'] = [repo.lookupbranch(b) for b in opts['branch']]
 
     displayer = cmdutil.show_changeset(ui, repo, opts, True, matchfn)
     def prep(ctx, fns):
--- a/mercurial/localrepo.py	Mon Apr 19 16:47:44 2010 -0500
+++ b/mercurial/localrepo.py	Mon Apr 12 19:33:25 2010 -0400
@@ -455,6 +455,14 @@
             pass
         raise error.RepoLookupError(_("unknown revision '%s'") % key)
 
+    def lookupbranch(self, key, remote=None):
+        repo = remote or self
+        if key in repo.branchmap():
+            return key
+
+        repo = (remote and remote.local()) and remote or self
+        return repo[key].branch()
+
     def local(self):
         return True
 
--- a/tests/test-log	Mon Apr 19 16:47:44 2010 -0500
+++ b/tests/test-log	Mon Apr 12 19:33:25 2010 -0400
@@ -162,7 +162,19 @@
 echo '% log -b dummy'
 hg log -b dummy
 
+echo '% log -b .'
+hg log -b .
+
 echo '% log -b default -b test'
 hg log -b default -b test
 
+echo '% log -b default -b .'
+hg log -b default -b .
+
+echo '% log -b . -b test'
+hg log -b . -b test
+
+echo '% log -b 2'
+hg log -b 2
+
 exit 0
--- a/tests/test-log.out	Mon Apr 19 16:47:44 2010 -0500
+++ b/tests/test-log.out	Mon Apr 12 19:33:25 2010 -0400
@@ -360,6 +360,22 @@
 summary:     commit on test
 
 % log -b dummy
+abort: unknown revision 'dummy'!
+% log -b .
+changeset:   3:f5d8de11c2e2
+branch:      test
+tag:         tip
+parent:      1:d32277701ccb
+user:        test
+date:        Thu Jan 01 00:00:00 1970 +0000
+summary:     commit on test
+
+changeset:   1:d32277701ccb
+branch:      test
+user:        test
+date:        Thu Jan 01 00:00:00 1970 +0000
+summary:     commit on test
+
 % log -b default -b test
 changeset:   3:f5d8de11c2e2
 branch:      test
@@ -386,3 +402,56 @@
 date:        Thu Jan 01 00:00:00 1970 +0000
 summary:     commit on default
 
+% log -b default -b .
+changeset:   3:f5d8de11c2e2
+branch:      test
+tag:         tip
+parent:      1:d32277701ccb
+user:        test
+date:        Thu Jan 01 00:00:00 1970 +0000
+summary:     commit on test
+
+changeset:   2:c3a4f03cc9a7
+parent:      0:24427303d56f
+user:        test
+date:        Thu Jan 01 00:00:00 1970 +0000
+summary:     commit on default
+
+changeset:   1:d32277701ccb
+branch:      test
+user:        test
+date:        Thu Jan 01 00:00:00 1970 +0000
+summary:     commit on test
+
+changeset:   0:24427303d56f
+user:        test
+date:        Thu Jan 01 00:00:00 1970 +0000
+summary:     commit on default
+
+% log -b . -b test
+changeset:   3:f5d8de11c2e2
+branch:      test
+tag:         tip
+parent:      1:d32277701ccb
+user:        test
+date:        Thu Jan 01 00:00:00 1970 +0000
+summary:     commit on test
+
+changeset:   1:d32277701ccb
+branch:      test
+user:        test
+date:        Thu Jan 01 00:00:00 1970 +0000
+summary:     commit on test
+
+% log -b 2
+changeset:   2:c3a4f03cc9a7
+parent:      0:24427303d56f
+user:        test
+date:        Thu Jan 01 00:00:00 1970 +0000
+summary:     commit on default
+
+changeset:   0:24427303d56f
+user:        test
+date:        Thu Jan 01 00:00:00 1970 +0000
+summary:     commit on default
+