#!/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 hg -R s ci -Ams0 hg sum hg ci -m1 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