sapling/tests/test-subrepo
Saint Germain ca80dfaea9 subrepo: change default path in hgrc of subrepo after cloning
Previous behavior was to put in the cloned subrepos the path found in the original main repo.
However it isn't valid for relative path and it seems more logical to reference instead the subrepos
working copy path of the original main repo.
2010-02-06 19:14:37 +01:00

187 lines
3.6 KiB
Bash
Executable File

#!/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 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 ci -m2
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
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'
hg up # should pull t
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 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 | sed "s:${PWD}:/tmp:"
rm -rf mercurial mercurial2
exit 0