mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 00:45:18 +03:00
e488c0e84f
The main problem was that dirstate.getcwd() returned just "", which was interpreted as "we're at the repo root". It now returns an absolute path. The util.pathto function was also changed to deal with the "cwd is an absolute path" case.
113 lines
2.7 KiB
Bash
Executable File
113 lines
2.7 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
hg init a
|
|
mkdir a/d1
|
|
mkdir a/d1/d2
|
|
echo line 1 > a/a
|
|
echo line 1 > a/d1/d2/a
|
|
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
|
|
rm -r b
|
|
|
|
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
|
|
rm -r b
|
|
|
|
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
|
|
rm -r b
|
|
|
|
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
|
|
|
|
echo % import from stdin
|
|
hg clone -r0 a b
|
|
hg --cwd a export tip | hg --cwd b import -
|
|
rm -r b
|
|
|
|
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
|
|
rm -r b
|
|
|
|
cat > mkmsg.py <<EOF
|
|
import email.Message, sys
|
|
msg = email.Message.Message()
|
|
msg.set_payload('email commit message\n' + open('tip.patch').read())
|
|
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
|
|
rm -r b
|
|
|
|
echo % plain diff in email, no subject, message body
|
|
hg clone -r0 a b
|
|
grep -v '^Subject:' msg.patch | hg --cwd b import -
|
|
rm -r b
|
|
|
|
echo % plain diff in email, subject, no message body
|
|
hg clone -r0 a b
|
|
grep -v '^email ' msg.patch | hg --cwd b import -
|
|
rm -r b
|
|
|
|
echo % plain diff in email, no subject, no message body, should fail
|
|
hg clone -r0 a b
|
|
egrep -v '^(Subject|email)' msg.patch | hg --cwd b import -
|
|
rm -r b
|
|
|
|
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
|
|
rm -r b
|
|
|
|
# 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
|
|
dir=`pwd`
|
|
cd b/d1/d2 2>&1 > /dev/null
|
|
hg import ../../../tip.patch
|
|
cd $dir
|
|
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
|