diff mercurial/localrepo.py @ 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 4d81cbd8a851
children ca052b484e56
line wrap: on
line diff
--- 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