add -f/--force to pull, incoming, outgoing, to work on unrelated repo.
before this, push would not push from e.g. "hg" repo to "kernel" repo
but other commands worked. this was bad idea, could merge unrelated
projects by accident. i did this tonight.
now, all commands still work with unrelated repo but need
--force/-f. abort is default. this is safer.
#!/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 update -m 1
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 "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 update -m 1
echo %% merge of b expected
env HGMERGE=../merge hg update -f -m 1
cd ..; /bin/rm -rf 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 update -m 2
echo %% merge expected!
env HGMERGE=../merge hg update -f -m 2
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 "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 update -m 2
echo %% merge of b expected
env HGMERGE=../merge hg update -f -m 2
cd ..; /bin/rm -rf t