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.
#!/bin/sh
hg init repo
cd repo
echo foo > foo
hg ci -qAm 'add foo'
echo >> foo
hg ci -m 'change foo'
hg up -qC 0
echo bar > bar
hg ci -qAm 'add bar'
hg log
cd ..
hg init copy
cd copy
echo '% pull a missing revision'
hg pull -qr missing ../repo
echo '% pull multiple revisions with update'
hg pull -qu -r 0 -r 1 ../repo
hg -q parents
hg rollback
echo '% pull -r 0'
hg pull -qr 0 ../repo
hg log
echo '% pull -r 1'
hg pull -qr 1 ../repo
hg log
# this used to abort: received changelog group is empty
echo '% pull -r 1 again'
hg pull -qr 1 ../repo