log: follow filenames through renames (issue647)
In commands.log a displayer was initialized from
cmdutil.show_changeset() with the initial matchfn (which designates
the specified files which only is correct in the highest revision in
the range). prep() is handed the correct list of files, but
displayer.show() didn't use that list but keept using the original
matchfn.
The matchfn argument to cmdutil.show_changeset() wasn't specified in
other places and is only used in .show(), so now we give the matchfn
as an optional parameter to .show().
We do however still have to detect --patch and --stat from opts in
show_changeset() and let it imply a matchall, but that can now be
overruled with the new .show() matchfn parameter.
#!/bin/sh
hg init repo
cd repo
echo foo > foo
echo bar > bar
hg ci -qAm 'add foo bar'
echo foo2 >> foo
echo bleh > bar
hg ci -m 'change foo bar'
hg up -qC 0
hg mv foo foo1
echo foo1 > foo1
hg cat foo >> foo1
hg ci -m 'mv foo foo1'
hg merge
hg debugstate --nodates
hg st -q
echo '% removing foo1 and bar'
cp foo1 F
cp bar B
hg rm -f foo1 bar
hg debugstate --nodates
hg st -qC
echo '% readding foo1 and bar'
cp F foo1
cp B bar
hg add -v foo1 bar
hg debugstate --nodates
hg st -qC
echo '% reverting foo1 and bar'
hg revert -vr . foo1 bar
hg debugstate --nodates
hg st -qC
hg diff