--- a/hgext/patchbomb.py Fri Dec 28 17:10:25 2007 +0100
+++ b/hgext/patchbomb.py Fri Dec 28 17:10:57 2007 +0100
@@ -216,7 +216,7 @@
tmpfn = os.path.join(tmpdir, 'bundle')
try:
commands.bundle(ui, repo, tmpfn, dest, **opts)
- return open(tmpfn).read()
+ return open(tmpfn, 'rb').read()
finally:
try:
os.unlink(tmpfn)
@@ -262,6 +262,15 @@
def genmsgid(id):
return '<%s.%s@%s>' % (id[:20], int(start_time[0]), socket.getfqdn())
+ def getdescription(body, sender):
+ if opts['desc']:
+ body = open(opts['desc']).read()
+ else:
+ ui.write(_('\nWrite the introductory message for the '
+ 'patch series.\n\n'))
+ body = ui.edit(body, sender)
+ return body
+
def getexportmsgs():
patches = []
@@ -308,13 +317,7 @@
d = cdiffstat(_('Final summary:\n'), jumbo)
if d: body = '\n' + d
- if opts['desc']:
- body = open(opts['desc']).read()
- else:
- ui.write(_('\nWrite the introductory message for the '
- 'patch series.\n\n'))
- body = ui.edit(body, sender)
-
+ body = getdescription(body, sender)
msg = email.MIMEText.MIMEText(body)
msg['Subject'] = subj
@@ -324,9 +327,8 @@
def getbundlemsgs(bundle):
subj = (opts['subject']
or prompt('Subject:', default='A bundle for your repository'))
- ui.write(_('\nWrite the introductory message for the bundle.\n\n'))
- body = ui.edit('', sender)
+ body = getdescription('', sender)
msg = email.MIMEMultipart.MIMEMultipart()
if body:
msg.attach(email.MIMEText.MIMEText(body, 'plain'))
--- a/tests/test-patchbomb Fri Dec 28 17:10:25 2007 +0100
+++ b/tests/test-patchbomb Fri Dec 28 17:10:57 2007 +0100
@@ -1,20 +1,46 @@
#!/bin/sh
+fixheaders()
+{
+ sed -e 's/\(Message-Id:.*@\).*/\1/' \
+ -e 's/\(In-Reply-To:.*@\).*/\1/' \
+ -e 's/===.*/===/'
+}
+
echo "[extensions]" >> $HGRCPATH
echo "patchbomb=" >> $HGRCPATH
-hg init
+hg init t
+cd t
echo a > a
hg commit -Ama -d '1 0'
hg email --date '1970-1-1 0:1' -n -f quux -t foo -c bar tip | \
- sed -e 's/\(Message-Id:.*@\).*/\1/'
+ fixheaders
echo b > b
hg commit -Amb -d '2 0'
hg email --date '1970-1-1 0:2' -n -f quux -t foo -c bar -s test 0:tip | \
- sed -e 's/\(Message-Id:.*@\).*/\1/' | \
- sed -e 's/\(In-Reply-To:.*@\).*/\1/'
+ fixheaders
hg email -m test.mbox -f quux -t foo -c bar -s test 0:tip
+
+cd ..
+
+hg clone -q t t2
+cd t2
+echo c > c
+hg commit -Amc -d '3 0'
+
+cat > description <<EOF
+a multiline
+
+description
+EOF
+
+echo % test bundle and description
+hg email --date '1970-1-1 0:3' -n -f quux -t foo \
+ -c bar -s test -r tip -b --desc description | \
+ fixheaders
+
--- a/tests/test-patchbomb.out Fri Dec 28 17:10:25 2007 +0100
+++ b/tests/test-patchbomb.out Fri Dec 28 17:10:57 2007 +0100
@@ -107,3 +107,40 @@
Writing [PATCH 0 of 2] test ...
Writing [PATCH 1 of 2] a ...
Writing [PATCH 2 of 2] b ...
+adding c
+% test bundle and description
+searching for changes
+
+Displaying test ...
+Content-Type: multipart/mixed; boundary="===
+MIME-Version: 1.0
+Subject: test
+Message-Id: <patchbomb.180@
+Date: Thu, 01 Jan 1970 00:03:00 +0000
+From: quux
+To: foo
+Cc: bar
+
+--===
+Content-Type: text/plain; charset="us-ascii"
+MIME-Version: 1.0
+Content-Transfer-Encoding: 7bit
+
+a multiline
+
+description
+
+--===
+Content-Type: application/x-mercurial-bundle
+MIME-Version: 1.0
+Content-Disposition: attachment; filename="bundle.hg"
+Content-Transfer-Encoding: base64
+
+SEcxMEJaaDkxQVkmU1nvR7I3AAAN////lFYQWj1/4HwRkdC/AywIAk0E4pfoSIIIgQCgGEQOcLAA
+2tA1VPyp4mkeoG0EaaPU0GTT1GjRiNPIg9CZGBqZ6UbU9J+KFU09DNUaGgAAAAAANAGgAAAAA1U8
+oGgAADQGgAANNANAAAAAAZipFLz3XoakCEQB3PVPyHJVi1iYkAAKQAZQGpQGZESInRnCFMqLDla2
+Bx3qfRQeA2N4lnzKkAmP8kR2asievLLXXebVU8Vg4iEBqcJNJAxIapSU6SM4888ZAciRG6MYAIEE
+SlIBpFisgGkyRjX//TMtfcUAEsGu56+YnE1OlTZmzKm8BSu2rvo4rHAYYaadIFFuTy0LYgIkgLVD
+sgVa2F19D1tx9+hgbAygLgQwaIqcDdgA4BjQgIiz/AEP72++llgDKhKducqodGE4B0ETqF3JFOFC
+Q70eyNw=
+--===