Mercurial > hg > mercurial-crew-with-dirclash
view tests/test-rename-merge2 @ 3295:764688cf51e5
merge: remember rename copies and parents properly on commit
record copies in dirstate even if rename was remote
this lets us record it properly at commit
teach checkfilemerge about copies, including merge cases
pull old copy code out of commit
extend rename-merge1 test to show file index
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Sun, 08 Oct 2006 19:57:45 -0500 |
parents | 438b0638dbf5 |
children | 9dcf9d45cab8 |
line wrap: on
line source
#!/bin/sh mkdir -p t cd t cat <<'EOF' > merge #!/bin/sh echo merge $1 $2 $3 > $1 EOF chmod +x merge # perform a test merge with possible renaming # # args: # $1 = action in local branch # $2 = action in remote branch # $3 = action in working dir # $4 = expected result tm() { mkdir t cd t hg init echo "[merge]" >> .hg/hgrc echo "followcopies = 1" >> .hg/hgrc # base echo base > a echo base > rev # used to force commits hg add a rev hg ci -m "base" -d "0 0" # remote echo remote > rev if [ "$2" != "" ] ; then $2 ; fi hg ci -m "remote" -d "0 0" # local hg co -q 0 echo local > rev if [ "$1" != "" ] ; then $1 ; fi hg ci -m "local" -d "0 0" # working dir echo local > rev if [ "$3" != "" ] ; then $3 ; fi # merge echo "--------------" echo "test L:$1 R:$2 W:$3 - $4" echo "--------------" env HGMERGE=../merge hg merge -y --debug --traceback echo "--------------" hg status -camC -X rev hg ci -m "merge" -d "0 0" echo "--------------" echo cd .. rm -rf t } up() { cp rev $1 hg add $1 2> /dev/null if [ "$2" != "" ] ; then cp rev $2 hg add $2 2> /dev/null fi } uc() { up $1; hg cp $1 $2; } # update + copy um() { up $1; hg mv $1 $2; } nc() { hg cp $1 $2; } # just copy nm() { hg mv $1 $2; } # just move tm "up a " "nc a b" " " "1 get local a to b" tm "nc a b" "up a " " " "2 get rem change to a and b" tm "up a " "nm a b" " " "3 get local a change to b, remove a" tm "nm a b" "up a " " " "4 get remote change to b" tm " " "nc a b" " " "5 get b" tm "nc a b" " " " " "6 nothing" tm " " "nm a b" " " "7 get b" tm "nm a b" " " " " "8 nothing" tm "um a b" "um a b" " " "9 do merge with ancestor in a" #tm "um a c" "um x c" " " "10 do merge with no ancestor" tm "nm a b" "nm a c" " " "11 get c, keep b" tm "nc a b" "up b " " " "12 merge b no ancestor" tm "up b " "nm a b" " " "13 merge b no ancestor" tm "nc a b" "up a b" " " "14 merge b no ancestor" tm "up b " "nm a b" " " "15 merge b no ancestor, remove a" tm "nc a b" "up a b" " " "16 get a, merge b no ancestor" tm "up a b" "nc a b" " " "17 keep a, merge b no ancestor" tm "nm a b" "up a b" " " "18 merge b no ancestor" tm "up a b" "nm a b" " " "19 merge b no ancestor, prompt remove a" tm "up a " "um a b" " " "20 merge a and b to b, remove a" tm "um a b" "up a " " " "21 merge a and b to b" #tm "nm a b" "um x a" " " "22 get a, keep b" tm "nm a b" "up a c" " " "23 get c, keep b"