view tests/test-merge1 @ 4135:6cb6cfe43c5d

Avoid some false positives for addremove -s The original code uses the similary score 1 - len(diff(after, before)) / len(after) The diff can at most be the size of the 'before' file, so any small 'before' file would be considered very similar. Removing an empty file would cause all files added in the same revision to be considered copies of the removed file. This changes the metric to bytes_overlap(before, after) / len(before + after) i.e. the actual percentage of bytes shared between the two files.
author Erling Ellingsen <erlingalf@gmail.com>
date Sun, 18 Feb 2007 20:39:25 +0100
parents 9dcf9d45cab8
children ccfe423d3d0a
line wrap: on
line source

#!/bin/sh

cat <<'EOF' > merge
#!/bin/sh
echo merging for `basename $1`
EOF
chmod +x merge

mkdir t
cd t
hg init
echo This is file a1 > a
hg add a
hg commit -m "commit #0" -d "1000000 0"
echo This is file b1 > b
hg add b
hg commit -m "commit #1" -d "1000000 0"

hg update 0
echo This is file c1 > c
hg add c
hg commit -m "commit #2" -d "1000000 0"
echo This is file b1 > b
echo %% no merges expected
env HGMERGE=../merge hg merge 1
hg diff --nodates
hg status
cd ..; rm -r t

mkdir t
cd t
hg init
echo This is file a1 > a
hg add a
hg commit -m "commit #0" -d "1000000 0"
echo This is file b1 > b
hg add b
hg commit -m "commit #1" -d "1000000 0"

hg update 0
echo This is file c1 > c
hg add c
hg commit -m "commit #2" -d "1000000 0"
echo This is file b2 > b
echo %% merge should fail
env HGMERGE=../merge hg merge 1
echo %% merge of b expected
env HGMERGE=../merge hg merge -f 1
hg diff --nodates
hg status
cd ..; rm -r t
echo %%

mkdir t
cd t
hg init
echo This is file a1 > a
hg add a
hg commit -m "commit #0" -d "1000000 0"
echo This is file b1 > b
hg add b
hg commit -m "commit #1" -d "1000000 0"
echo This is file b22 > b
hg commit -m "commit #2" -d "1000000 0"
hg update 1
echo This is file c1 > c
hg add c
hg commit -m "commit #3" -d "1000000 0"

echo 'Contents of b should be "this is file b1"'
cat b

echo This is file b22 > b
echo %% merge fails
env HGMERGE=../merge hg merge 2
echo %% merge expected!
env HGMERGE=../merge hg merge -f 2
hg diff --nodates
hg status
cd ..; rm -r t

mkdir t
cd t
hg init
echo This is file a1 > a
hg add a
hg commit -m "commit #0" -d "1000000 0"
echo This is file b1 > b
hg add b
hg commit -m "commit #1" -d "1000000 0"
echo This is file b22 > b
hg commit -m "commit #2" -d "1000000 0"
hg update 1
echo This is file c1 > c
hg add c
hg commit -m "commit #3" -d "1000000 0"
echo This is file b33 > b
echo %% merge of b should fail
env HGMERGE=../merge hg merge 2
echo %% merge of b expected
env HGMERGE=../merge hg merge -f 2
hg diff --nodates
hg status