|
|
#!/bin/sh
|
|
|
|
|
|
mkdir a
|
|
|
cd a
|
|
|
hg init
|
|
|
echo foo > t1
|
|
|
hg add t1
|
|
|
hg commit -m "1" -d "1000000 0"
|
|
|
|
|
|
cd ..
|
|
|
hg clone a b
|
|
|
|
|
|
cd a
|
|
|
echo foo > t2
|
|
|
hg add t2
|
|
|
hg commit -m "2" -d "1000000 0"
|
|
|
|
|
|
cd ../b
|
|
|
echo foo > t3
|
|
|
hg add t3
|
|
|
hg commit -m "3" -d "1000000 0"
|
|
|
|
|
|
hg push ../a
|
|
|
hg pull ../a
|
|
|
hg push ../a
|
|
|
hg merge
|
|
|
hg commit -m "4" -d "1000000 0"
|
|
|
hg push ../a
|
|
|
cd ..
|
|
|
|
|
|
hg init c
|
|
|
cd c
|
|
|
for i in 0 1 2; do
|
|
|
echo $i >> foo
|
|
|
hg ci -Am $i -d "1000000 0"
|
|
|
done
|
|
|
cd ..
|
|
|
|
|
|
hg clone c d
|
|
|
cd d
|
|
|
for i in 0 1; do
|
|
|
hg co -C $i
|
|
|
echo d-$i >> foo
|
|
|
hg ci -m d-$i -d "1000000 0"
|
|
|
done
|
|
|
|
|
|
HGMERGE=true hg merge 3
|
|
|
hg ci -m c-d -d "1000000 0"
|
|
|
|
|
|
hg push ../c; echo $?
|
|
|
hg push -r 2 ../c; echo $?
|
|
|
hg push -r 3 ../c; echo $?
|
|
|
hg push -r 3 -r 4 ../c; echo $?
|
|
|
hg push -f -r 3 -r 4 ../c; echo $?
|
|
|
hg push -r 5 ../c; echo $?
|
|
|
|
|
|
# issue 450
|
|
|
hg init ../e
|
|
|
hg push -r 0 ../e ; echo $?
|
|
|
hg push -r 1 ../e ; echo $?
|
|
|
|
|
|
cd ..
|
|
|
|
|
|
# issue 736
|
|
|
echo % issue 736
|
|
|
hg init f
|
|
|
cd f
|
|
|
hg -q branch a
|
|
|
echo 0 > foo
|
|
|
hg -q ci -d "1000000 0" -Am 0
|
|
|
echo 1 > foo
|
|
|
hg -q ci -d "1000000 0" -m 1
|
|
|
hg -q up 0
|
|
|
echo 2 > foo
|
|
|
hg -q ci -d "1000000 0" -m 2
|
|
|
hg -q up 0
|
|
|
hg -q branch b
|
|
|
echo 3 > foo
|
|
|
hg -q ci -d "1000000 0" -m 3
|
|
|
cd ..
|
|
|
|
|
|
hg -q clone f g
|
|
|
cd g
|
|
|
|
|
|
echo % push on existing branch and new branch
|
|
|
hg -q up 1
|
|
|
echo 4 > foo
|
|
|
hg -q ci -d "1000000 0" -m 4
|
|
|
hg -q up 0
|
|
|
echo 5 > foo
|
|
|
hg -q branch c
|
|
|
hg -q ci -d "1000000 0" -m 5
|
|
|
hg push -r 4 -r 5 ../f; echo $?
|
|
|
|
|
|
echo % fail on multiple head push
|
|
|
hg -q up 1
|
|
|
echo 6 > foo
|
|
|
hg -q ci -d "1000000 0" -m 6
|
|
|
hg push -r 4 -r 6 ../f; echo $?
|
|
|
|
|
|
echo % push replacement head on existing branches
|
|
|
hg -q up 3
|
|
|
echo 7 > foo
|
|
|
hg -q ci -d "1000000 0" -m 7
|
|
|
hg push -r 6 -r 7 ../f; echo $?
|
|
|
|
|
|
echo % merge of branch a to other branch b followed by unrelated push on branch a
|
|
|
hg -q up 6
|
|
|
HGMERGE=true hg -q merge 7
|
|
|
hg -q ci -d "1000000 0" -m 8
|
|
|
hg -q up 7
|
|
|
echo 9 > foo
|
|
|
hg -q ci -d "1000000 0" -m 9
|
|
|
hg push -r 8 ../f; echo $?
|
|
|
hg push -r 9 ../f; echo $?
|
|
|
|
|
|
echo % cheating the counting algorithm
|
|
|
hg -q up 8
|
|
|
HGMERGE=true hg -q merge 2
|
|
|
hg -q ci -d "1000000 0" -m 10
|
|
|
hg -q up 1
|
|
|
echo 11 > foo
|
|
|
hg -q ci -d "1000000 0" -m 11
|
|
|
hg push -r 10 -r 11 ../f; echo $?
|
|
|
|
|
|
echo % checking prepush logic does not allow silently pushing multiple new heads
|
|
|
cd ..
|
|
|
hg init h
|
|
|
echo init > h/init
|
|
|
hg -R h ci -Am init
|
|
|
echo a > h/a
|
|
|
hg -R h ci -Am a
|
|
|
hg clone h i
|
|
|
hg -R h up 0
|
|
|
echo b > h/b
|
|
|
hg -R h ci -Am b
|
|
|
hg -R i up 0
|
|
|
echo c > i/c
|
|
|
hg -R i ci -Am c
|
|
|
hg -R i push h
|
|
|
echo
|
|
|
|
|
|
echo % check prepush logic with merged branches
|
|
|
hg init j
|
|
|
hg -R j branch a
|
|
|
echo init > j/foo
|
|
|
hg -R j ci -Am init
|
|
|
hg clone j k
|
|
|
echo a1 > j/foo
|
|
|
hg -R j ci -m a1
|
|
|
hg -R k branch b
|
|
|
echo b > k/foo
|
|
|
hg -R k ci -m b
|
|
|
hg -R k up 0
|
|
|
hg -R k merge b
|
|
|
hg -R k ci -m merge
|
|
|
hg -R k push -r a j
|
|
|
echo
|
|
|
|
|
|
exit 0
|
|
|
|