Mercurial > hg
view tests/test-mv-cp-st-diff @ 11541:ab9fa7a85dd9 stable
filelog: cmp: don't read data if hashes are identical (issue2273)
filelog.renamed() is an expensive call as it reads the filelog if p1 == nullid.
It's more efficient to first compute the hash, and to bail early if
the computed hash is the same as the stored nodeid.
'samehashes' variable is not strictly necessary, but helps for comprehension.
author | Nicolas Dumazet <nicdumz.commits@gmail.com> |
---|---|
date | Mon, 05 Jul 2010 19:49:54 +0900 |
parents | 83cfa1baf8ad |
children |
line wrap: on
line source
#!/bin/sh add() { echo $2 >> $1 } hg init t cd t # set up a boring main branch add a a hg add a mkdir x add x/x x hg add x/x hg ci -m0 add a m1 hg ci -m1 add a m2 add x/y y1 hg add x/y hg ci -m2 cd .. show() { echo "- $2: $1" hg st -C $1 echo hg diff --git $1 echo } count=0 # make a new branch and get diff/status output # $1 - first commit # $2 - second commit # $3 - working dir action # $4 - test description tb() { hg clone t t2 ; cd t2 hg co -q -C 0 add a $count count=`expr $count + 1` hg ci -m "t0" $1 hg ci -m "t1" $2 hg ci -m "t2" $3 echo "** $4 **" echo "** $1 / $2 / $3" show "" "working to parent" show "--rev 0" "working to root" show "--rev 2" "working to branch" show "--rev 0 --rev ." "root to parent" show "--rev . --rev 0" "parent to root" show "--rev 2 --rev ." "branch to parent" show "--rev . --rev 2" "parent to branch" echo cd .. rm -rf t2 } tb "add a a1" "add a a2" "hg mv a b" "rename in working dir" tb "add a a1" "add a a2" "hg cp a b" "copy in working dir" tb "hg mv a b" "add b b1" "add b w" "single rename" tb "hg cp a b" "add b b1" "add a w" "single copy" tb "hg mv a b" "hg mv b c" "hg mv c d" "rename chain" tb "hg cp a b" "hg cp b c" "hg cp c d" "copy chain" tb "add a a1" "hg mv a b" "hg mv b a" "circular rename" tb "hg mv x y" "add y/x x1" "add y/x x2" "directory move" # Cannot implement unrelated branch with tb echo '% testing copies with unrelated branch' hg init unrelated cd unrelated add a a hg ci -Am adda hg mv a b hg ci -m movea hg up -C null add a a hg ci -Am addunrelateda echo '% unrelated branch diff' hg diff --git -r 2 -r 1 cd ..