localrepo: add optional validation (defaults to off) for incoming changes
This verifies that all manifests are present for incoming changes,
and all files for those manifests are also present. This is a simple
first-pass, and could be better, but seems like a valuable thing to
have, as I've seen pushes in the past that propagated revlog corruption.
#!/bin/sh
echo % init foo-base
hg init foo-base
echo % create alpha in first repo
cd foo-base
echo 'alpha' > alpha
hg ci -A -m 'add alpha' -d '1 0'
cd ..
echo % clone foo-base to foo-work
hg clone foo-base foo-work
echo % create beta in second repo
cd foo-work
echo 'beta' > beta
hg ci -A -m 'add beta' -d '2 0'
cd ..
echo % create gamma in first repo
cd foo-base
echo 'gamma' > gamma
hg ci -A -m 'add gamma' -d '3 0'
cd ..
echo % pull into work and merge
cd foo-work
hg pull -q
hg merge
echo % revert to changeset 1 to simulate a failed merge
rm alpha beta gamma
hg up -C 1