hgweb: fix a stupid KeyError introduced in
a0e20a5eba3c
Thanks to Christian Ebert for finding this. Also added a test to prevent this
from happening again.
hgweb: cleanup buglet introduced in
956afc025c0f
CVS convert: Find correct parent for new branch (
issue704)
Previously the parent was determined by the last changeset where the branched
file was changed even if the branch is based on an earlier revision.
Fix written by mpm.
convert: Do not abort with TypeError if svn commit message is None (
issue934)
fix test-strip-cross on solaris
Apparently "ENVVAR=value command" doesn't work when command is a shell
function.
Reported by Richard Lowe.
simplify revlog.strip interface and callers; add docstring
Also, strip files only after the changelog and the manifest.
strip: calculate list of extra nodes to save and pass it to changegroupsubset
When we remove revision N from the repository, all revisions >= N are
affected: either it's a descendant from N and will also be removed, or
it's not a descendant of N and will be renumbered.
As a consequence, we have to (at least temporarily) remove all filelog
and manifest revisions that have a linkrev >= N, readding some of them
later.
Unfortunately, it's possible to have a revlog with two revisions
r1 and r2 such that r1 < r2, but linkrev(r1) > linkrev(r2). If we try
to strip revision linkrev(r1) from the repository, we'll also lose
revision r2 when we truncate this revlog.
We already use changegroupsubset to create a temporary changegroup
containing the revisions that have to be restored, but that function is
unable to detect that we also wanted to save the r2 in the case above.
So we manually calculate these extra nodes and pass it to changegroupsubset.
This should fix
issue764.