debugbuilddag: build a changelog dag from a concise description
Useful in tests to quickly build a complex DAG in an empty repo.
Handles local tags and named branches.
Options to, at each rev,
- create a new file,
- overwrite the same file,
- append to the same file,
- write to a specific line in a mergeable file.
Can run shell commands during DAG buildup.
#!/bin/sh
echo % prepare repo
hg init a
cd a
echo "some text" > FOO.txt
echo "another text" > bar.txt
echo "more text" > QUICK.txt
hg add
hg ci -mtest1
echo
echo % verify
hg verify
echo
echo % verify with journal
touch .hg/store/journal
hg verify
rm .hg/store/journal
echo
echo % introduce some bugs in repo
cd .hg/store/data
mv _f_o_o.txt.i X_f_o_o.txt.i
mv bar.txt.i xbar.txt.i
rm _q_u_i_c_k.txt.i
echo
echo % verify
hg verify
cd ..
echo % test revlog corruption
hg init b
cd b
touch a
hg add a
hg ci -m a
echo 'corrupted' > b
dd if=.hg/store/data/a.i of=start bs=1 count=20 2>/dev/null
cat start b > .hg/store/data/a.i
echo
echo % verify
hg verify
exit 0