convert: handle past or foreign partial svn copies
Subversion allows revisions to be composed of subparts coming from revisions
before the parent or from other part of the repository. There is no simple
representation for these now, keep the changes but do not track their origins.
#!/bin/sh
hg init a
cd a
echo a > a
hg ci -Ama -d '1 0'
hg cp a b
hg ci -mb -d '2 0'
mkdir dir
hg mv b dir
hg ci -mc -d '3 0'
hg mv a b
echo a > d
hg add d
hg ci -md -d '4 0'
hg mv dir/b e
hg ci -me -d '5 0'
hg log a
echo % -f, directory
hg log -f dir
echo % -f, but no args
hg log -f
echo % one rename
hg log -vf a
echo % many renames
hg log -vf e
echo % log copies
hg log -vC --template '{rev} {file_copies%filecopy}\n'
echo % log copies, non-linear manifest
hg up -C 3
hg mv dir/b e
echo foo > foo
hg ci -Ame2 -d '6 0'
hg log -vC --template '{rev} {file_copies%filecopy}\n' -r 5
echo % log copies, execute bit set
chmod +x e
hg ci -me3 -d '7 0'
hg log -vC --template '{rev} {file_copies%filecopy}\n' -r 6
echo '% log -p d'
hg log -pv d
# log --follow tests
hg init ../follow
cd ../follow
echo base > base
hg ci -Ambase -d '1 0'
echo r1 >> base
hg ci -Amr1 -d '1 0'
echo r2 >> base
hg ci -Amr2 -d '1 0'
hg up -C 1
echo b1 > b1
hg ci -Amb1 -d '1 0'
echo % log -f
hg log -f
hg up -C 0
echo b2 > b2
hg ci -Amb2 -d '1 0'
echo % log -f -r 1:tip
hg log -f -r 1:tip
hg up -C 3
hg merge tip
echo % log -r . with two parents
hg log -r .
hg ci -mm12 -d '1 0'
echo % log -r . with one parent
hg log -r .
echo postm >> b1
hg ci -Amb1.1 -d'1 0'
echo % log --follow-first
hg log --follow-first
echo % log -P 2
hg log -P 2
echo '% log -r ""'
hg log -r ''
exit 0