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.
--- 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
+