Always copy the necessary files before applying a git patch
This patch removes the "copymod" attribute from the gitpatch
class.
AFAICS, that attribute was only used to delay the copying of
renamed/copied files if there are no other changes to the target,
but in this case, if there are changes to the source, we'll end
up copying the wrong version.
This should fix issue762.
#!/bin/sh
hg init test
cd test
cat >>afile <<EOF
0
EOF
hg add afile
hg commit -m "0.0" -d "1000000 0"
cat >>afile <<EOF
1
EOF
hg commit -m "0.1" -d "1000000 0"
cat >>afile <<EOF
2
EOF
hg commit -m "0.2" -d "1000000 0"
cat >>afile <<EOF
3
EOF
hg commit -m "0.3" -d "1000000 0"
hg update -C 0
cat >>afile <<EOF
1
EOF
hg commit -m "1.1" -d "1000000 0"
cat >>afile <<EOF
2
EOF
hg commit -m "1.2" -d "1000000 0"
cat >fred <<EOF
a line
EOF
cat >>afile <<EOF
3
EOF
hg add fred
hg commit -m "1.3" -d "1000000 0"
hg mv afile adifferentfile
hg commit -m "1.3m" -d "1000000 0"
hg update -C 3
hg mv afile anotherfile
hg commit -m "0.3m" -d "1000000 0"
hg debugindex .hg/store/data/afile.i
hg debugindex .hg/store/data/adifferentfile.i
hg debugindex .hg/store/data/anotherfile.i
hg debugindex .hg/store/data/fred.i
hg debugindex .hg/store/00manifest.i
hg verify
cd ..
for i in 0 1 2 3 4 5 6 7 8; do
mkdir test-"$i"
hg --cwd test-"$i" init
hg -R test bundle -r "$i" test-"$i".hg test-"$i"
cd test-"$i"
hg unbundle ../test-"$i".hg
hg verify
hg tip -q
cd ..
done
cd test-8
hg pull ../test-7
hg verify
hg rollback
cd ..
echo % should fail
hg -R test bundle --base 2 -r tip test-bundle-branch1.hg test-3
hg -R test bundle -r tip test-bundle-branch1.hg
hg -R test bundle --base 2 -r tip test-bundle-branch1.hg
hg -R test bundle --base 2 -r 7 test-bundle-branch2.hg
hg -R test bundle --base 2 test-bundle-all.hg
hg -R test bundle --base 3 -r tip test-bundle-should-fail.hg
# issue76 msg2163
hg -R test bundle --base 3 -r 3 -r 3 test-bundle-cset-3.hg
hg clone test-2 test-9
cd test-9
echo % 2
hg tip -q
hg unbundle ../test-bundle-should-fail.hg
echo % 2
hg tip -q
hg unbundle ../test-bundle-all.hg
echo % 8
hg tip -q
hg verify
hg rollback
echo % 2
hg tip -q
hg unbundle ../test-bundle-branch1.hg
echo % 4
hg tip -q
hg verify
hg rollback
hg unbundle ../test-bundle-branch2.hg
echo % 6
hg tip -q
hg verify
cd ../test
hg merge 7
hg ci -m merge -d "1000000 0"
cd ..
hg -R test bundle --base 2 test-bundle-head.hg
hg clone test-2 test-10
cd test-10
hg unbundle ../test-bundle-head.hg
echo % 9
hg tip -q
hg verify