Mercurial > hg
view tests/test-subrepo @ 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 | b602a95c21ec |
children |
line wrap: on
line source
#!/bin/sh rm -rf sub mkdir sub cd sub hg init t cd t echo % first revision, no sub echo a > a hg ci -Am0 echo % add first sub echo s = s > .hgsub hg add .hgsub hg init s echo a > s/a # issue2232 - committing a subrepo without .hgsub hg ci -mbad s hg -R s ci -Ams0 hg sum hg ci -m1 # issue 2022 - update -C echo b > s/a hg sum hg co -C 1 hg sum echo % add sub sub echo ss = ss > s/.hgsub hg init s/ss echo a > s/ss/a hg -R s add s/.hgsub hg -R s/ss add s/ss/a hg sum hg ci -m2 hg sum echo % bump sub rev echo b > s/a hg -R s ci -ms1 hg ci -m3 echo % leave sub dirty echo c > s/a hg ci -m4 hg tip -R s echo % check caching hg co 0 hg debugsub echo % restore hg co hg debugsub echo % new branch for merge tests hg co 1 echo t = t >> .hgsub hg init t echo t > t/t hg -R t add t echo % 5 hg ci -m5 # add sub echo t2 > t/t echo % 6 hg st -R s hg ci -m6 # change sub hg debugsub echo t3 > t/t echo % 7 hg ci -m7 # change sub again for conflict test hg rm .hgsub echo % 8 hg ci -m8 # remove sub echo % merge tests hg co -C 3 hg merge 5 # test adding hg debugsub hg ci -m9 hg merge 6 --debug # test change hg debugsub echo conflict > t/t hg ci -m10 HGMERGE=internal:merge hg merge --debug 7 # test conflict echo % should conflict cat t/t echo % clone cd .. hg clone t tc | sed 's|from .*/sub|from .../sub|g' cd tc hg debugsub echo % push echo bah > t/t hg ci -m11 hg push | sed 's/ .*sub/ ...sub/g' echo % push -f echo bah > s/a hg ci -m12 hg push | sed 's/ .*sub/ ...sub/g' hg push -f | sed 's/ .*sub/ ...sub/g' echo % update cd ../t hg up -C # discard our earlier merge echo blah > t/t hg ci -m13 echo % pull cd ../tc hg pull | sed 's/ .*sub/ ...sub/g' # should pull t hg up | sed 's|from .*/sub|from .../sub|g' cat t/t echo % bogus subrepo path aborts echo 'bogus=[boguspath' >> .hgsub hg ci -m 'bogus subrepo path' echo % issue 1986 cd .. rm -rf sub hg init main cd main hg init s # subrepo layout cd s # echo a > a # o 5 br hg ci -Am1 # /| hg branch br # o | 4 default echo a >> a # | | hg ci -m1 # | o 3 br hg up default # |/| echo b > b # o | 2 default hg ci -Am1 # | | hg up br # | o 1 br hg merge tip # |/ hg ci -m1 # o 0 default hg up 2 echo c > c hg ci -Am1 hg up 3 hg merge 4 hg ci -m1 cd .. # main repo layout: echo 's = s' > .hgsub # hg -R s up 2 # * <-- try to merge default into br again hg ci -Am1 # .`| hg branch br # . o 5 br --> substate = 5 echo b > b # . | hg -R s up 3 # o | 4 default --> substate = 4 hg ci -Am1 # | | hg up default # | o 3 br --> substate = 2 echo c > c # |/| hg ci -Am1 # o | 2 default --> substate = 2 hg up 1 # | | hg merge 2 # | o 1 br --> substate = 3 hg ci -m1 # |/ hg up 2 # o 0 default --> substate = 2 hg -R s up 4 echo d > d hg ci -Am1 hg up 3 hg -R s up 5 echo e > e hg ci -Am1 hg up 5 hg merge 4 # try to merge default into br again cd .. echo % test subrepo delete from .hgsubstate hg init testdelete mkdir testdelete/nested testdelete/nested2 hg init testdelete/nested hg init testdelete/nested2 echo test > testdelete/nested/foo echo test > testdelete/nested2/foo hg -R testdelete/nested add hg -R testdelete/nested2 add hg -R testdelete/nested ci -m test hg -R testdelete/nested2 ci -m test echo nested = nested > testdelete/.hgsub echo nested2 = nested2 >> testdelete/.hgsub hg -R testdelete add hg -R testdelete ci -m "nested 1 & 2 added" echo nested = nested > testdelete/.hgsub hg -R testdelete ci -m "nested 2 deleted" cat testdelete/.hgsubstate | sed "s:.* ::" hg -R testdelete remove testdelete/.hgsub hg -R testdelete ci -m ".hgsub deleted" cat testdelete/.hgsubstate echo % test repository cloning mkdir mercurial mercurial2 hg init nested_absolute echo test > nested_absolute/foo hg -R nested_absolute add hg -R nested_absolute ci -mtest cd mercurial hg init nested_relative echo test2 > nested_relative/foo2 hg -R nested_relative add hg -R nested_relative ci -mtest2 hg init main echo "nested_relative = ../nested_relative" > main/.hgsub echo "nested_absolute = `pwd`/nested_absolute" >> main/.hgsub hg -R main add hg -R main ci -m "add subrepos" cd .. hg clone mercurial/main mercurial2/main cat mercurial2/main/nested_absolute/.hg/hgrc \ mercurial2/main/nested_relative/.hg/hgrc \ | "$TESTDIR/filtertmp.py" rm -rf mercurial mercurial2 echo % issue 1977 hg init repo hg init repo/s echo a > repo/s/a hg -R repo/s ci -Am0 echo s = s > repo/.hgsub hg -R repo ci -Am1 hg clone repo repo2 | sed 's|from .*/sub|from .../sub|g' hg -q -R repo2 pull -u echo 1 > repo2/s/a hg -R repo2/s ci -m2 hg -q -R repo2/s push hg -R repo2/s up -C 0 echo 2 > repo2/s/a hg -R repo2/s ci -m3 hg -R repo2 ci -m3 hg -q -R repo2 push hg -R repo update rm -rf repo2 repo exit 0