Adapt commit to use file matching code.
The code is slightly complicated by the need to commit all outstanding
changes in the repository if no file names are given (other commands
operate on the current directory and its subdirectories in this case).
localrepository.changes has acquired an optional match parameter, to let
it filter out include/exclude options.
#!/bin/sh -x
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 "0 0"
echo This is file b1 > b
hg add b
hg commit -m "commit #1" -d "0 0"
hg update 0
echo This is file c1 > c
hg add c
hg commit -m "commit #2" -d "0 0"
echo This is file b1 > b
env HGMERGE=../merge hg update -m 1
# no merges expected
cd ..; /bin/rm -rf t
mkdir t
cd t
hg init
echo This is file a1 > a
hg add a
hg commit -m "commit #0" -d "0 0"
echo This is file b1 > b
hg add b
hg commit -m "commit #1" -d "0 0"
hg update 0
echo This is file c1 > c
hg add c
hg commit -m "commit #2" -d "0 0"
echo This is file b2 > b
env HGMERGE=../merge hg update -m 1
# merge of b expected
cd ..; /bin/rm -rf t
mkdir t
cd t
hg init
echo This is file a1 > a
hg add a
hg commit -m "commit #0" -d "0 0"
echo This is file b1 > b
hg add b
hg commit -m "commit #1" -d "0 0"
echo This is file b22 > b
hg commit -m "commit #2" -d "0 0"
hg update 1
echo This is file c1 > c
hg add c
hg commit -m "commit #3" -d "0 0"
cat b
echo This is file b22 > b
env HGMERGE=../merge hg update -m 2
# merge expected!
cd ..; /bin/rm -rf t
mkdir t
cd t
hg init
echo This is file a1 > a
hg add a
hg commit -m "commit #0" -d "0 0"
echo This is file b1 > b
hg add b
hg commit -m "commit #1" -d "0 0"
echo This is file b22 > b
hg commit -m "commit #2" -d "0 0"
hg update 1
echo This is file c1 > c
hg add c
hg commit -m "commit #3" -d "0 0"
echo This is file b33 > b
env HGMERGE=../merge hg update -m 2
# merge of b expected
cd ..; /bin/rm -rf t