Mercurial > hg > mercurial-source
view tests/test-push-warn @ 9954:d6a307719ccb stable
fix bug in prepush logic involving merge changesets
When creating new branches and merging them into existing ones, you would
sometimes be able to push some changesets (the existing branches) without using
--force, even when that creates a new head on the remote.
A test which triggers the error has been added.
author | Sune Foldager <cryo@cyanite.org> |
---|---|
date | Mon, 30 Nov 2009 14:58:52 +0100 |
parents | aa404f3f661b |
children | 844d83da2da9 |
line wrap: on
line source
#!/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