test-import
131 lines
| 3.3 KiB
| text/plain
|
TextLexer
/ tests / test-import
|
r2513 | #!/bin/sh | ||
hg init a | ||||
|
r2773 | mkdir a/d1 | ||
mkdir a/d1/d2 | ||||
|
r2513 | echo line 1 > a/a | ||
|
r2773 | echo line 1 > a/d1/d2/a | ||
|
r2513 | hg --cwd a ci -d '0 0' -Ama | ||
echo line 2 >> a/a | ||||
hg --cwd a ci -u someone -d '1 0' -m'second change' | ||||
echo % import exported patch | ||||
hg clone -r0 a b | ||||
hg --cwd a export tip > tip.patch | ||||
hg --cwd b import ../tip.patch | ||||
echo % message should be same | ||||
hg --cwd b tip | grep 'second change' | ||||
echo % committer should be same | ||||
hg --cwd b tip | grep someone | ||||
|
r3988 | rm -r b | ||
|
r2513 | |||
echo % import of plain diff should fail without message | ||||
hg clone -r0 a b | ||||
hg --cwd a diff -r0:1 > tip.patch | ||||
hg --cwd b import ../tip.patch | ||||
|
r3988 | rm -r b | ||
|
r2513 | |||
echo % import of plain diff should be ok with message | ||||
hg clone -r0 a b | ||||
hg --cwd a diff -r0:1 > tip.patch | ||||
hg --cwd b import -mpatch ../tip.patch | ||||
|
r3988 | rm -r b | ||
|
r2513 | |||
|
r4230 | echo % hg -R repo import | ||
# put the clone in a subdir - having a directory named "a" | ||||
# used to hide a bug. | ||||
mkdir dir | ||||
hg clone -r0 a dir/b | ||||
hg --cwd a export tip > dir/tip.patch | ||||
cd dir | ||||
hg -R b import tip.patch | ||||
cd .. | ||||
rm -r dir | ||||
|
r2513 | echo % import from stdin | ||
hg clone -r0 a b | ||||
hg --cwd a export tip | hg --cwd b import - | ||||
|
r3988 | rm -r b | ||
|
r2513 | |||
echo % override commit message | ||||
hg clone -r0 a b | ||||
hg --cwd a export tip | hg --cwd b import -m 'override' - | ||||
hg --cwd b tip | grep override | ||||
|
r3988 | rm -r b | ||
|
r2513 | |||
cat > mkmsg.py <<EOF | ||||
import email.Message, sys | ||||
msg = email.Message.Message() | ||||
|
r5530 | msg.set_payload('email commit message\n' + open('tip.patch', 'rb').read()) | ||
|
r2513 | msg['Subject'] = 'email patch' | ||
msg['From'] = 'email patcher' | ||||
sys.stdout.write(msg.as_string()) | ||||
EOF | ||||
echo % plain diff in email, subject, message body | ||||
hg clone -r0 a b | ||||
hg --cwd a diff -r0:1 > tip.patch | ||||
python mkmsg.py > msg.patch | ||||
hg --cwd b import ../msg.patch | ||||
hg --cwd b tip | grep email | ||||
|
r3988 | rm -r b | ||
|
r2513 | |||
echo % plain diff in email, no subject, message body | ||||
hg clone -r0 a b | ||||
grep -v '^Subject:' msg.patch | hg --cwd b import - | ||||
|
r3988 | rm -r b | ||
|
r2513 | |||
echo % plain diff in email, subject, no message body | ||||
hg clone -r0 a b | ||||
grep -v '^email ' msg.patch | hg --cwd b import - | ||||
|
r3988 | rm -r b | ||
|
r2513 | |||
echo % plain diff in email, no subject, no message body, should fail | ||||
hg clone -r0 a b | ||||
|
r2843 | egrep -v '^(Subject|email)' msg.patch | hg --cwd b import - | ||
|
r3988 | rm -r b | ||
|
r2513 | |||
echo % hg export in email, should use patch header | ||||
hg clone -r0 a b | ||||
hg --cwd a export tip > tip.patch | ||||
python mkmsg.py | hg --cwd b import - | ||||
hg --cwd b tip | grep second | ||||
|
r3988 | rm -r b | ||
|
r2513 | |||
|
r4779 | # subject: duplicate detection, removal of [PATCH] | ||
|
r5418 | # The '---' tests the gitsendmail handling without proper mail headers | ||
|
r4779 | cat > mkmsg2.py <<EOF | ||
import email.Message, sys | ||||
msg = email.Message.Message() | ||||
|
r5418 | msg.set_payload('email patch\n\nnext line\n---\n' + open('tip.patch').read()) | ||
|
r4779 | msg['Subject'] = '[PATCH] email patch' | ||
msg['From'] = 'email patcher' | ||||
sys.stdout.write(msg.as_string()) | ||||
EOF | ||||
echo '% plain diff in email, [PATCH] subject, message body with subject' | ||||
hg clone -r0 a b | ||||
hg --cwd a diff -r0:1 > tip.patch | ||||
python mkmsg2.py | hg --cwd b import - | ||||
hg --cwd b tip --template '{desc}\n' | ||||
rm -r b | ||||
|
r2773 | # bug non regression test | ||
# importing a patch in a subdirectory failed at the commit stage | ||||
echo line 2 >> a/d1/d2/a | ||||
hg --cwd a ci -u someoneelse -d '1 0' -m'subdir change' | ||||
echo % hg import in a subdirectory | ||||
hg clone -r0 a b | ||||
hg --cwd a export tip | sed -e 's/d1\/d2\///' > tip.patch | ||||
|
r2843 | dir=`pwd` | ||
cd b/d1/d2 2>&1 > /dev/null | ||||
|
r2773 | hg import ../../../tip.patch | ||
|
r2843 | cd $dir | ||
|
r2773 | echo "% message should be 'subdir change'" | ||
hg --cwd b tip | grep 'subdir change' | ||||
echo "% committer should be 'someoneelse'" | ||||
hg --cwd b tip | grep someoneelse | ||||
echo "% should be empty" | ||||
hg --cwd b status | ||||