Mercurial > hg
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 +