|
|
#!/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
|
|
|
|
|
|
exit 0
|
|
|
|