Assuming I have a named branch foo with two commits a, b:
a b c
------o-------o-------o------- # default
\\ d e
diff between branches:
hg diff -r <branchname_1>:<branchname_2>
show current branch's latest commit:
hg log -r .
Another way to do this, useful also for branches that you have already merged to default is:
hg diff -r "max(ancestors(foo) and branch(default)):foo"
Though that can be a pit of a pain, so i'd recommend setting up an alias by adding something like:
[alias]
branchdiff = diff -r "max(ancestors('$1') and branch(default)):'$1'"
To your Mercurial.INI/hgrc which you can then use like this:
hg branchdiff <branch name>
or
hg branchdiff .
If you want logs from current branch only:
hg log -b .
You can do it using revsets.
In your specific example I think you could get a list of of just d
and e
using:
hg log -r "branch('foo') - branch('default')"
where that -
is defined as:
"x - y"
Changesets in x but not in y.
Getting the diff from a to e could be done as:
hg diff -r "ancestor(default, foo)" -r foo
though there's possibly a shorthand for that I'm not seeing.