mirror of
https://github.com/facebook/sapling.git
synced 2024-10-09 16:31:02 +03:00
7af1039389
patch.extract extracts just the message below HG changeset patch. So to not parse comments above the patch, we reset the message if we find a changeset patch as we know the commit message comes after the changeset patch data. This is similar to the behavior of patch.extract. The drawback of this approach, after a qref -e the comment above HG changeset patch is gone. Without this patch the message would become part of the commit message in the HG changset patch part.
111 lines
2.0 KiB
Bash
Executable File
111 lines
2.0 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
cat > writelines.py <<EOF
|
|
import sys
|
|
path = sys.argv[1]
|
|
args = sys.argv[2:]
|
|
assert (len(args) % 2) == 0
|
|
|
|
f = file(path, 'wb')
|
|
for i in xrange(len(args)/2):
|
|
count, s = args[2*i:2*i+2]
|
|
count = int(count)
|
|
s = s.decode('string_escape')
|
|
f.write(s*count)
|
|
f.close()
|
|
|
|
EOF
|
|
|
|
echo "[extensions]" >> $HGRCPATH
|
|
echo "mq=" >> $HGRCPATH
|
|
echo "[diff]" >> $HGRCPATH
|
|
echo "git=1" >> $HGRCPATH
|
|
|
|
hg init repo
|
|
cd repo
|
|
|
|
echo % qimport non-existing-file
|
|
hg qimport non-existing-file
|
|
|
|
echo % import email
|
|
hg qimport --push -n email - <<EOF
|
|
From: Username in email <test@example.net>
|
|
Subject: [PATCH] Message in email
|
|
Date: Fri, 02 Jan 1970 00:00:00 +0000
|
|
|
|
Text before patch.
|
|
|
|
# HG changeset patch
|
|
# User Username in patch <test@example.net>
|
|
# Date 0 0
|
|
# Node ID 1a706973a7d84cb549823634a821d9bdf21c6220
|
|
# Parent 0000000000000000000000000000000000000000
|
|
First line of commit message.
|
|
|
|
More text in commit message.
|
|
|
|
diff --git a/x b/x
|
|
new file mode 100644
|
|
--- /dev/null
|
|
+++ b/x
|
|
@@ -0,0 +1,1 @@
|
|
+new file
|
|
Text after patch.
|
|
|
|
EOF
|
|
|
|
echo % hg tip -v
|
|
hg tip -v
|
|
hg qpop
|
|
hg qdelete email
|
|
|
|
echo % import URL
|
|
echo foo >> foo
|
|
hg add foo
|
|
hg diff > $HGTMP/url.diff
|
|
hg revert --no-backup foo
|
|
rm foo
|
|
# Under unix: file:///foobar/blah
|
|
# Under windows: file:///c:/foobar/blah
|
|
patchurl=`echo $HGTMP/url.diff | tr '\\\\' /`
|
|
expr $patchurl : "\/" > /dev/null
|
|
if [ $? -ne 0 ]; then
|
|
patchurl='/'$patchurl
|
|
fi
|
|
hg qimport file://$patchurl
|
|
hg qun
|
|
|
|
echo % import patch that already exists
|
|
echo foo2 >> foo
|
|
hg add foo
|
|
hg diff > ../url.diff
|
|
hg revert --no-backup foo
|
|
rm foo
|
|
hg qimport ../url.diff
|
|
hg qpush
|
|
cat foo
|
|
hg qpop
|
|
echo % qimport -f
|
|
hg qimport -f ../url.diff
|
|
hg qpush
|
|
cat foo
|
|
hg qpop
|
|
|
|
echo % build diff with CRLF
|
|
python ../writelines.py b 5 'a\n' 5 'a\r\n'
|
|
hg ci -Am addb
|
|
python ../writelines.py b 2 'a\n' 10 'b\n' 2 'a\r\n'
|
|
hg diff > b.diff
|
|
hg up -C
|
|
echo % qimport CRLF diff
|
|
hg qimport b.diff
|
|
hg qpush
|
|
|
|
echo % try to import --push
|
|
echo another >> b
|
|
hg diff > another.diff
|
|
hg up -C
|
|
hg qimport --push another.diff
|
|
hg qfin -a
|
|
hg qimport -rtip -P
|