test-fetch
175 lines
| 4.0 KiB
| text/plain
|
TextLexer
/ tests / test-fetch
Vadim Gelfer
|
r2822 | #!/bin/sh | ||
Thomas Arendsen Hein
|
r6246 | # adjust to non-default HGPORT, e.g. with run-tests.py -j | ||
hideport() { sed "s/localhost:$HGPORT/localhost:20059/"; } | ||||
hidehash() { sed "s/changeset 3:............ merges/changeset 3:... merges/"; } | ||||
Thomas Arendsen Hein
|
r2990 | echo "[extensions]" >> $HGRCPATH | ||
echo "fetch=" >> $HGRCPATH | ||||
Vadim Gelfer
|
r2822 | |||
Sune Foldager
|
r7007 | echo % test fetch with default branches only | ||
Vadim Gelfer
|
r2822 | hg init a | ||
echo a > a/a | ||||
hg --cwd a commit -d '1 0' -Ama | ||||
hg clone a b | ||||
hg clone a c | ||||
echo b > a/b | ||||
hg --cwd a commit -d '2 0' -Amb | ||||
hg --cwd a parents -q | ||||
echo % should pull one change | ||||
hg --cwd b fetch ../a | ||||
hg --cwd b parents -q | ||||
echo c > c/c | ||||
hg --cwd c commit -d '3 0' -Amc | ||||
Bryan O'Sullivan
|
r5798 | |||
hg clone c d | ||||
hg clone c e | ||||
Bryan O'Sullivan
|
r6207 | # We cannot use the default commit message if fetching from a local | ||
# repo, because the path of the repo will be included in the commit | ||||
# message, making every commit appear different. | ||||
Bryan O'Sullivan
|
r6206 | echo % should merge c into a | ||
Vadim Gelfer
|
r2823 | hg --cwd c fetch -d '4 0' -m 'automated merge' ../a | ||
Vadim Gelfer
|
r2822 | ls c | ||
Bryan O'Sullivan
|
r5798 | |||
Matt Mackall
|
r7344 | netstat -tnap 2>/dev/null | grep $HGPORT | grep LISTEN | ||
Bryan O'Sullivan
|
r5798 | hg --cwd a serve -a localhost -p $HGPORT -d --pid-file=hg.pid | ||
cat a/hg.pid >> "$DAEMON_PIDS" | ||||
echo '% fetch over http, no auth' | ||||
Thomas Arendsen Hein
|
r6246 | hg --cwd d fetch -d '5 0' http://localhost:$HGPORT/ | hideport | hidehash | ||
hg --cwd d tip --template '{desc}\n' | hideport | ||||
Bryan O'Sullivan
|
r5798 | |||
echo '% fetch over http with auth (should be hidden in desc)' | ||||
Thomas Arendsen Hein
|
r6246 | hg --cwd e fetch -d '5 0' http://user:password@localhost:$HGPORT/ | hideport | hidehash | ||
hg --cwd e tip --template '{desc}\n' | hideport | ||||
Bryan O'Sullivan
|
r6206 | |||
hg clone a f | ||||
hg clone a g | ||||
echo f > f/f | ||||
hg --cwd f ci -d '6 0' -Amf | ||||
echo g > g/g | ||||
hg --cwd g ci -d '6 0' -Amg | ||||
Bryan O'Sullivan
|
r6226 | hg clone -q f h | ||
hg clone -q g i | ||||
Bryan O'Sullivan
|
r6206 | echo % should merge f into g | ||
Bryan O'Sullivan
|
r6207 | hg --cwd g fetch -d '7 0' --switch -m 'automated merge' ../f | ||
Bryan O'Sullivan
|
r6226 | |||
rm i/g | ||||
echo % should abort, because i is modified | ||||
hg --cwd i fetch ../h | ||||
Thomas Arendsen Hein
|
r6235 | |||
Sune Foldager
|
r7007 | |||
echo % test fetch with named branches | ||||
hg init nbase | ||||
echo base > nbase/a | ||||
hg -R nbase ci -d '1 0' -Am base | ||||
hg -R nbase branch a | ||||
echo a > nbase/a | ||||
hg -R nbase ci -d '2 0' -m a | ||||
hg -R nbase up -C 0 | ||||
hg -R nbase branch b | ||||
echo b > nbase/b | ||||
hg -R nbase ci -Ad '3 0' -m b | ||||
echo | ||||
echo % pull in change on foreign branch | ||||
hg clone nbase n1 | ||||
hg clone nbase n2 | ||||
hg -R n1 up -C a | ||||
echo aa > n1/a | ||||
hg -R n1 ci -d '4 0' -m a1 | ||||
hg -R n2 up -C b | ||||
hg -R n2 fetch -d '9 0' -m 'merge' n1 | ||||
echo '% parent should be 2 (no automatic update)' | ||||
hg -R n2 parents --template '{rev}\n' | ||||
rm -fr n1 n2 | ||||
echo | ||||
echo % pull in changes on both foreign and local branches | ||||
hg clone nbase n1 | ||||
hg clone nbase n2 | ||||
hg -R n1 up -C a | ||||
echo aa > n1/a | ||||
hg -R n1 ci -d '4 0' -m a1 | ||||
hg -R n1 up -C b | ||||
echo bb > n1/b | ||||
hg -R n1 ci -d '5 0' -m b1 | ||||
hg -R n2 up -C b | ||||
hg -R n2 fetch -d '9 0' -m 'merge' n1 | ||||
echo '% parent should be 4 (fast forward)' | ||||
hg -R n2 parents --template '{rev}\n' | ||||
rm -fr n1 n2 | ||||
echo | ||||
echo '% pull changes on foreign (2 new heads) and local (1 new head) branches' | ||||
echo % with a local change | ||||
hg clone nbase n1 | ||||
hg clone nbase n2 | ||||
hg -R n1 up -C a | ||||
echo a1 > n1/a | ||||
hg -R n1 ci -d '4 0' -m a1 | ||||
hg -R n1 up -C b | ||||
echo bb > n1/b | ||||
hg -R n1 ci -d '5 0' -m b1 | ||||
hg -R n1 up -C 1 | ||||
echo a2 > n1/a | ||||
hg -R n1 ci -d '6 0' -m a2 | ||||
hg -R n2 up -C b | ||||
echo change >> n2/c | ||||
hg -R n2 ci -Ad '7 0' -m local | ||||
hg -R n2 fetch -d '9 0' -m 'merge' n1 | ||||
echo '% parent should be 7 (new merge changeset)' | ||||
hg -R n2 parents --template '{rev}\n' | ||||
rm -fr n1 n2 | ||||
echo '% pull in changes on foreign (merge of local branch) and local (2 new' | ||||
echo '% heads) with a local change' | ||||
hg clone nbase n1 | ||||
hg clone nbase n2 | ||||
hg -R n1 up -C a | ||||
hg -R n1 merge b | ||||
hg -R n1 ci -d '4 0' -m merge | ||||
hg -R n1 up -C 2 | ||||
echo c > n1/a | ||||
hg -R n1 ci -d '5 0' -m c | ||||
hg -R n1 up -C 2 | ||||
echo cc > n1/a | ||||
hg -R n1 ci -d '6 0' -m cc | ||||
hg -R n2 up -C b | ||||
echo change >> n2/b | ||||
hg -R n2 ci -Ad '7 0' -m local | ||||
hg -R n2 fetch -d '9 0' -m 'merge' n1 | ||||
echo '% parent should be 3 (fetch did not merge anything)' | ||||
hg -R n2 parents --template '{rev}\n' | ||||
rm -fr n1 n2 | ||||
Sune Foldager
|
r7049 | echo % pull in change on different branch than dirstate | ||
hg init n1 | ||||
echo a > n1/a | ||||
hg -R n1 ci -Am initial | ||||
hg clone n1 n2 | ||||
echo b > n1/a | ||||
hg -R n1 ci -m next | ||||
hg -R n2 branch topic | ||||
hg -R n2 fetch -d '0 0' -m merge n1 | ||||
echo '% parent should be 0 (fetch did not update or merge anything)' | ||||
hg -R n2 parents --template '{rev}\n' | ||||
rm -fr n1 n2 | ||||
Matt Mackall
|
r7344 | "$TESTDIR/killdaemons.py" | ||
Thomas Arendsen Hein
|
r6235 | true | ||