Patchwork [2,of,2] patchbomb: includes a unique series ID in email header

login
register
mail settings
Submitter Pierre-Yves David
Date May 6, 2014, 9:39 p.m.
Message ID <5500b6ff141bdca42820.1399412350@marginatus.alto.octopoid.net>
Download mbox | patch
Permalink /patch/4642/
State Superseded
Headers show

Comments

Pierre-Yves David - May 6, 2014, 9:39 p.m.
# HG changeset patch
# User Pierre-Yves David <pierre-yves.david@fb.com>
# Date 1399355480 25200
#      Mon May 05 22:51:20 2014 -0700
# Node ID 5500b6ff141bdca42820778fc3dd04977bbb594d
# Parent  860dbc41ea1bc3e3e24943867ac2383a04886ce4
patchbomb: includes a unique series ID in email header

Now that we have patch index and series size information, having a unique series
identifier will helps tool to glue all email back together without any
additional logic.
Sean Farley - May 6, 2014, 9:52 p.m.
pierre-yves.david@ens-lyon.org writes:

> # HG changeset patch
> # User Pierre-Yves David <pierre-yves.david@fb.com>
> # Date 1399355480 25200
> #      Mon May 05 22:51:20 2014 -0700
> # Node ID 5500b6ff141bdca42820778fc3dd04977bbb594d
> # Parent  860dbc41ea1bc3e3e24943867ac2383a04886ce4
> patchbomb: includes a unique series ID in email header
>
> Now that we have patch index and series size information, having a unique series
> identifier will helps tool to glue all email back together without any
> additional logic.
>
> diff --git a/hgext/patchbomb.py b/hgext/patchbomb.py
> --- a/hgext/patchbomb.py
> +++ b/hgext/patchbomb.py
> @@ -517,10 +517,11 @@ def patchbomb(ui, repo, *revs, **opts):
>          if parent:
>              m['In-Reply-To'] = parent
>              m['References'] = parent
>          if not parent or 'X-Mercurial-Node' not in m:
>              parent = m['Message-Id']
> +        m['X-Mercurial-Serie-id'] = parent

This should be 'Series'.

>          m['User-Agent'] = 'Mercurial-patchbomb/%s' % util.version()
>          m['Date'] = email.Utils.formatdate(start_time[0], localtime=True)
>  
>          start_time = (start_time[0] + 1, start_time[1])
> diff --git a/tests/test-patchbomb.t b/tests/test-patchbomb.t
> --- a/tests/test-patchbomb.t
> +++ b/tests/test-patchbomb.t
> @@ -18,10 +18,11 @@
>    Subject: [PATCH] a
>    X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
>    X-Mercurial-Serie-index: 1
>    X-Mercurial-Serie-total: 1
>    Message-Id: <8580ff50825a50c8f716.60@*> (glob)
> +  X-Mercurial-Serie-id: <8580ff50825a50c8f716.60@*> (glob)

Same here.

>    User-Agent: Mercurial-patchbomb/* (glob)
>    Date: Thu, 01 Jan 1970 00:01:00 +0000
>    From: quux
>    To: foo
>    Cc: bar
> @@ -74,10 +75,11 @@
>    Content-Type: text/plain; charset="us-ascii"
>    MIME-Version: 1.0
>    Content-Transfer-Encoding: 7bit
>    Subject: [PATCH 0 of 2] test
>    Message-Id: <patchbomb.120@*> (glob)
> +  X-Mercurial-Serie-id: <patchbomb.120@*> (glob)

And here.

>    User-Agent: Mercurial-patchbomb/* (glob)
>    Date: Thu, 01 Jan 1970 00:02:00 +0000
>    From: quux
>    To: foo
>    Cc: bar
> @@ -92,10 +94,11 @@
>    X-Mercurial-Serie-index: 1
>    X-Mercurial-Serie-total: 2
>    Message-Id: <8580ff50825a50c8f716.121@*> (glob)
>    In-Reply-To: <patchbomb.120@*> (glob)
>    References: <patchbomb.120@*> (glob)
> +  X-Mercurial-Serie-id: <patchbomb.120@*> (glob)

And here.

>    User-Agent: Mercurial-patchbomb/* (glob)
>    Date: Thu, 01 Jan 1970 00:02:01 +0000
>    From: quux
>    To: foo
>    Cc: bar
> @@ -123,10 +126,11 @@
>    X-Mercurial-Serie-index: 2
>    X-Mercurial-Serie-total: 2
>    Message-Id: <97d72e5f12c7e84f8506.122@*> (glob)
>    In-Reply-To: <patchbomb.120@*> (glob)
>    References: <patchbomb.120@*> (glob)
> +  X-Mercurial-Serie-id: <patchbomb.120@*> (glob)

Ok, I'm going to stop here.

Patch

diff --git a/hgext/patchbomb.py b/hgext/patchbomb.py
--- a/hgext/patchbomb.py
+++ b/hgext/patchbomb.py
@@ -517,10 +517,11 @@  def patchbomb(ui, repo, *revs, **opts):
         if parent:
             m['In-Reply-To'] = parent
             m['References'] = parent
         if not parent or 'X-Mercurial-Node' not in m:
             parent = m['Message-Id']
+        m['X-Mercurial-Serie-id'] = parent
 
         m['User-Agent'] = 'Mercurial-patchbomb/%s' % util.version()
         m['Date'] = email.Utils.formatdate(start_time[0], localtime=True)
 
         start_time = (start_time[0] + 1, start_time[1])
diff --git a/tests/test-patchbomb.t b/tests/test-patchbomb.t
--- a/tests/test-patchbomb.t
+++ b/tests/test-patchbomb.t
@@ -18,10 +18,11 @@ 
   Subject: [PATCH] a
   X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
   X-Mercurial-Serie-index: 1
   X-Mercurial-Serie-total: 1
   Message-Id: <8580ff50825a50c8f716.60@*> (glob)
+  X-Mercurial-Serie-id: <8580ff50825a50c8f716.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
   Cc: bar
@@ -74,10 +75,11 @@ 
   Content-Type: text/plain; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 0 of 2] test
   Message-Id: <patchbomb.120@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.120@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:02:00 +0000
   From: quux
   To: foo
   Cc: bar
@@ -92,10 +94,11 @@ 
   X-Mercurial-Serie-index: 1
   X-Mercurial-Serie-total: 2
   Message-Id: <8580ff50825a50c8f716.121@*> (glob)
   In-Reply-To: <patchbomb.120@*> (glob)
   References: <patchbomb.120@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.120@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:02:01 +0000
   From: quux
   To: foo
   Cc: bar
@@ -123,10 +126,11 @@ 
   X-Mercurial-Serie-index: 2
   X-Mercurial-Serie-total: 2
   Message-Id: <97d72e5f12c7e84f8506.122@*> (glob)
   In-Reply-To: <patchbomb.120@*> (glob)
   References: <patchbomb.120@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.120@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:02:02 +0000
   From: quux
   To: foo
   Cc: bar
@@ -208,10 +212,11 @@  test bundle and description:
   displaying test ...
   Content-Type: multipart/mixed; boundary="===*" (glob)
   MIME-Version: 1.0
   Subject: test
   Message-Id: <patchbomb.180@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.180@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:03:00 +0000
   From: quux
   To: foo
   Cc: bar
@@ -258,10 +263,11 @@  no mime encoding for email --test:
   Subject: [PATCH] utf-8 content
   X-Mercurial-Node: 909a00e13e9d78b575aeee23dddbada46d5a143f
   X-Mercurial-Serie-index: 1
   X-Mercurial-Serie-total: 1
   Message-Id: <909a00e13e9d78b575ae.240@*> (glob)
+  X-Mercurial-Serie-id: <909a00e13e9d78b575ae.240@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:04:00 +0000
   From: quux
   To: foo
   Cc: bar
@@ -303,10 +309,11 @@  mime encoded mbox (base64):
   Subject: [PATCH] utf-8 content
   X-Mercurial-Node: 909a00e13e9d78b575aeee23dddbada46d5a143f
   X-Mercurial-Serie-index: 1
   X-Mercurial-Serie-total: 1
   Message-Id: <909a00e13e9d78b575ae.240@*> (glob)
+  X-Mercurial-Serie-id: <909a00e13e9d78b575ae.240@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:04:00 +0000
   From: Q <quux>
   To: foo
   Cc: bar
@@ -364,10 +371,11 @@  no mime encoding for email --test:
   Subject: [PATCH] long line
   X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
   X-Mercurial-Serie-index: 1
   X-Mercurial-Serie-total: 1
   Message-Id: <a2ea8fc83dd8b93cfd86.240@*> (glob)
+  X-Mercurial-Serie-id: <a2ea8fc83dd8b93cfd86.240@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:04:00 +0000
   From: quux
   To: foo
   Cc: bar
@@ -417,10 +425,11 @@  mime encoded mbox (quoted-printable):
   Subject: [PATCH] long line
   X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
   X-Mercurial-Serie-index: 1
   X-Mercurial-Serie-total: 1
   Message-Id: <a2ea8fc83dd8b93cfd86.240@*> (glob)
+  X-Mercurial-Serie-id: <a2ea8fc83dd8b93cfd86.240@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:04:00 +0000
   From: quux
   To: foo
   Cc: bar
@@ -478,10 +487,11 @@  fake ascii mbox:
   Subject: [PATCH] isolatin 8-bit encoding
   X-Mercurial-Node: 240fb913fc1b7ff15ddb9f33e73d82bf5277c720
   X-Mercurial-Serie-index: 1
   X-Mercurial-Serie-total: 1
   Message-Id: <240fb913fc1b7ff15ddb.300@*> (glob)
+  X-Mercurial-Serie-id: <240fb913fc1b7ff15ddb.300@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:05:00 +0000
   From: quux
   To: foo
   Cc: bar
@@ -525,10 +535,11 @@  test diffstat for single patch:
   Subject: [PATCH] test
   X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
   X-Mercurial-Serie-index: 1
   X-Mercurial-Serie-total: 1
   Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
+  X-Mercurial-Serie-id: <ff2c9fa2018b15fa74b3.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
   Cc: bar
@@ -583,10 +594,11 @@  test diffstat for multiple patches:
   Content-Type: text/plain; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 0 of 2] test
   Message-Id: <patchbomb.60@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
   Cc: bar
@@ -605,10 +617,11 @@  test diffstat for multiple patches:
   X-Mercurial-Serie-index: 1
   X-Mercurial-Serie-total: 2
   Message-Id: <8580ff50825a50c8f716.61@*> (glob)
   In-Reply-To: <patchbomb.60@*> (glob)
   References: <patchbomb.60@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:01 +0000
   From: quux
   To: foo
   Cc: bar
@@ -640,10 +653,11 @@  test diffstat for multiple patches:
   X-Mercurial-Serie-index: 2
   X-Mercurial-Serie-total: 2
   Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
   In-Reply-To: <patchbomb.60@*> (glob)
   References: <patchbomb.60@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:02 +0000
   From: quux
   To: foo
   Cc: bar
@@ -678,10 +692,11 @@  test inline for single patch:
   Subject: [PATCH] test
   X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
   X-Mercurial-Serie-index: 1
   X-Mercurial-Serie-total: 1
   Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
+  X-Mercurial-Serie-id: <ff2c9fa2018b15fa74b3.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
   Cc: bar
@@ -720,10 +735,11 @@  test inline for single patch (quoted-pri
   Subject: [PATCH] test
   X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
   X-Mercurial-Serie-index: 1
   X-Mercurial-Serie-total: 1
   Message-Id: <a2ea8fc83dd8b93cfd86.60@*> (glob)
+  X-Mercurial-Serie-id: <a2ea8fc83dd8b93cfd86.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
   Cc: bar
@@ -779,10 +795,11 @@  test inline for multiple patches:
   Content-Type: text/plain; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 0 of 3] test
   Message-Id: <patchbomb.60@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
   Cc: bar
@@ -796,10 +813,11 @@  test inline for multiple patches:
   X-Mercurial-Serie-index: 1
   X-Mercurial-Serie-total: 3
   Message-Id: <8580ff50825a50c8f716.61@*> (glob)
   In-Reply-To: <patchbomb.60@*> (glob)
   References: <patchbomb.60@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:01 +0000
   From: quux
   To: foo
   Cc: bar
@@ -833,10 +851,11 @@  test inline for multiple patches:
   X-Mercurial-Serie-index: 2
   X-Mercurial-Serie-total: 3
   Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
   In-Reply-To: <patchbomb.60@*> (glob)
   References: <patchbomb.60@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:02 +0000
   From: quux
   To: foo
   Cc: bar
@@ -870,10 +889,11 @@  test inline for multiple patches:
   X-Mercurial-Serie-index: 3
   X-Mercurial-Serie-total: 3
   Message-Id: <a2ea8fc83dd8b93cfd86.63@*> (glob)
   In-Reply-To: <patchbomb.60@*> (glob)
   References: <patchbomb.60@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:03 +0000
   From: quux
   To: foo
   Cc: bar
@@ -927,10 +947,11 @@  test attach for single patch:
   Subject: [PATCH] test
   X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
   X-Mercurial-Serie-index: 1
   X-Mercurial-Serie-total: 1
   Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
+  X-Mercurial-Serie-id: <ff2c9fa2018b15fa74b3.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
   Cc: bar
@@ -977,10 +998,11 @@  test attach for single patch (quoted-pri
   Subject: [PATCH] test
   X-Mercurial-Node: a2ea8fc83dd8b93cfd86ac97b28287204ab806e1
   X-Mercurial-Serie-index: 1
   X-Mercurial-Serie-total: 1
   Message-Id: <a2ea8fc83dd8b93cfd86.60@*> (glob)
+  X-Mercurial-Serie-id: <a2ea8fc83dd8b93cfd86.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
   Cc: bar
@@ -1043,10 +1065,11 @@  test attach and body for single patch:
   Subject: [PATCH] test
   X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
   X-Mercurial-Serie-index: 1
   X-Mercurial-Serie-total: 1
   Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
+  X-Mercurial-Serie-id: <ff2c9fa2018b15fa74b3.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
   Cc: bar
@@ -1105,10 +1128,11 @@  test attach for multiple patches:
   Content-Type: text/plain; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 0 of 3] test
   Message-Id: <patchbomb.60@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
   Cc: bar
@@ -1122,10 +1146,11 @@  test attach for multiple patches:
   X-Mercurial-Serie-index: 1
   X-Mercurial-Serie-total: 3
   Message-Id: <8580ff50825a50c8f716.61@*> (glob)
   In-Reply-To: <patchbomb.60@*> (glob)
   References: <patchbomb.60@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:01 +0000
   From: quux
   To: foo
   Cc: bar
@@ -1168,10 +1193,11 @@  test attach for multiple patches:
   X-Mercurial-Serie-index: 2
   X-Mercurial-Serie-total: 3
   Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
   In-Reply-To: <patchbomb.60@*> (glob)
   References: <patchbomb.60@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:02 +0000
   From: quux
   To: foo
   Cc: bar
@@ -1214,10 +1240,11 @@  test attach for multiple patches:
   X-Mercurial-Serie-index: 3
   X-Mercurial-Serie-total: 3
   Message-Id: <a2ea8fc83dd8b93cfd86.63@*> (glob)
   In-Reply-To: <patchbomb.60@*> (glob)
   References: <patchbomb.60@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:03 +0000
   From: quux
   To: foo
   Cc: bar
@@ -1282,10 +1309,11 @@  test intro for single patch:
   Content-Type: text/plain; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 0 of 1] test
   Message-Id: <patchbomb.60@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
   Cc: bar
@@ -1300,10 +1328,11 @@  test intro for single patch:
   X-Mercurial-Serie-index: 1
   X-Mercurial-Serie-total: 1
   Message-Id: <ff2c9fa2018b15fa74b3.61@*> (glob)
   In-Reply-To: <patchbomb.60@*> (glob)
   References: <patchbomb.60@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:01 +0000
   From: quux
   To: foo
   Cc: bar
@@ -1334,10 +1363,11 @@  test --desc without --intro for a single
   Content-Type: text/plain; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 0 of 1] test
   Message-Id: <patchbomb.60@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
   Cc: bar
@@ -1353,10 +1383,11 @@  test --desc without --intro for a single
   X-Mercurial-Serie-index: 1
   X-Mercurial-Serie-total: 1
   Message-Id: <ff2c9fa2018b15fa74b3.61@*> (glob)
   In-Reply-To: <patchbomb.60@*> (glob)
   References: <patchbomb.60@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:01 +0000
   From: quux
   To: foo
   Cc: bar
@@ -1389,10 +1420,11 @@  test intro for multiple patches:
   Content-Type: text/plain; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 0 of 2] test
   Message-Id: <patchbomb.60@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
   Cc: bar
@@ -1407,10 +1439,11 @@  test intro for multiple patches:
   X-Mercurial-Serie-index: 1
   X-Mercurial-Serie-total: 2
   Message-Id: <8580ff50825a50c8f716.61@*> (glob)
   In-Reply-To: <patchbomb.60@*> (glob)
   References: <patchbomb.60@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:01 +0000
   From: quux
   To: foo
   Cc: bar
@@ -1438,10 +1471,11 @@  test intro for multiple patches:
   X-Mercurial-Serie-index: 2
   X-Mercurial-Serie-total: 2
   Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
   In-Reply-To: <patchbomb.60@*> (glob)
   References: <patchbomb.60@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:02 +0000
   From: quux
   To: foo
   Cc: bar
@@ -1474,10 +1508,11 @@  test reply-to via config:
   Subject: [PATCH] test
   X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
   X-Mercurial-Serie-index: 1
   X-Mercurial-Serie-total: 1
   Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
+  X-Mercurial-Serie-id: <ff2c9fa2018b15fa74b3.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
   Cc: bar
@@ -1511,10 +1546,11 @@  test reply-to via command line:
   Subject: [PATCH] test
   X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
   X-Mercurial-Serie-index: 1
   X-Mercurial-Serie-total: 1
   Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
+  X-Mercurial-Serie-id: <ff2c9fa2018b15fa74b3.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
   Cc: bar
@@ -1551,10 +1587,11 @@  test inline for single named patch:
   Subject: [PATCH] test
   X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
   X-Mercurial-Serie-index: 1
   X-Mercurial-Serie-total: 1
   Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
+  X-Mercurial-Serie-id: <ff2c9fa2018b15fa74b3.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
   Cc: bar
@@ -1593,10 +1630,11 @@  test inline for multiple named/unnamed p
   Content-Type: text/plain; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 0 of 2] test
   Message-Id: <patchbomb.60@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
   Cc: bar
@@ -1610,10 +1648,11 @@  test inline for multiple named/unnamed p
   X-Mercurial-Serie-index: 1
   X-Mercurial-Serie-total: 2
   Message-Id: <8580ff50825a50c8f716.61@*> (glob)
   In-Reply-To: <patchbomb.60@*> (glob)
   References: <patchbomb.60@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:01 +0000
   From: quux
   To: foo
   Cc: bar
@@ -1647,10 +1686,11 @@  test inline for multiple named/unnamed p
   X-Mercurial-Serie-index: 2
   X-Mercurial-Serie-total: 2
   Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
   In-Reply-To: <patchbomb.60@*> (glob)
   References: <patchbomb.60@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:02 +0000
   From: quux
   To: foo
   Cc: bar
@@ -1693,10 +1733,11 @@  test inreplyto:
   X-Mercurial-Serie-index: 1
   X-Mercurial-Serie-total: 1
   Message-Id: <7aead2484924c445ad8c.60@*> (glob)
   In-Reply-To: <baz>
   References: <baz>
+  X-Mercurial-Serie-id: <baz>
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
   Cc: bar
@@ -1735,10 +1776,11 @@  no intro message in non-interactive mode
   X-Mercurial-Serie-index: 1
   X-Mercurial-Serie-total: 2
   Message-Id: <8580ff50825a50c8f716.60@*> (glob)
   In-Reply-To: <baz>
   References: <baz>
+  X-Mercurial-Serie-id: <baz>
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
   Cc: bar
@@ -1766,10 +1808,11 @@  no intro message in non-interactive mode
   X-Mercurial-Serie-index: 2
   X-Mercurial-Serie-total: 2
   Message-Id: <97d72e5f12c7e84f8506.61@*> (glob)
   In-Reply-To: <baz>
   References: <baz>
+  X-Mercurial-Serie-id: <baz>
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:01 +0000
   From: quux
   To: foo
   Cc: bar
@@ -1805,10 +1848,11 @@  no intro message in non-interactive mode
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 0 of 2] test
   Message-Id: <patchbomb.60@*> (glob)
   In-Reply-To: <baz>
   References: <baz>
+  X-Mercurial-Serie-id: <patchbomb.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
   Cc: bar
@@ -1823,10 +1867,11 @@  no intro message in non-interactive mode
   X-Mercurial-Serie-index: 1
   X-Mercurial-Serie-total: 2
   Message-Id: <8580ff50825a50c8f716.61@*> (glob)
   In-Reply-To: <patchbomb.60@*> (glob)
   References: <patchbomb.60@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:01 +0000
   From: quux
   To: foo
   Cc: bar
@@ -1854,10 +1899,11 @@  no intro message in non-interactive mode
   X-Mercurial-Serie-index: 2
   X-Mercurial-Serie-total: 2
   Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
   In-Reply-To: <patchbomb.60@*> (glob)
   References: <patchbomb.60@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:02 +0000
   From: quux
   To: foo
   Cc: bar
@@ -1892,10 +1938,11 @@  test single flag for single patch (and n
   Subject: [PATCH fooFlag] test
   X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
   X-Mercurial-Serie-index: 1
   X-Mercurial-Serie-total: 1
   Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
+  X-Mercurial-Serie-id: <ff2c9fa2018b15fa74b3.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
   Cc: bar
@@ -1929,10 +1976,11 @@  test single flag for multiple patches (a
   Content-Type: text/plain; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 0 of 2 fooFlag] test
   Message-Id: <patchbomb.60@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
   Cc: bar
@@ -1947,10 +1995,11 @@  test single flag for multiple patches (a
   X-Mercurial-Serie-index: 1
   X-Mercurial-Serie-total: 2
   Message-Id: <8580ff50825a50c8f716.61@*> (glob)
   In-Reply-To: <patchbomb.60@*> (glob)
   References: <patchbomb.60@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:01 +0000
   From: quux
   To: foo
   Cc: bar
@@ -1978,10 +2027,11 @@  test single flag for multiple patches (a
   X-Mercurial-Serie-index: 2
   X-Mercurial-Serie-total: 2
   Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
   In-Reply-To: <patchbomb.60@*> (glob)
   References: <patchbomb.60@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:02 +0000
   From: quux
   To: foo
   Cc: bar
@@ -2016,10 +2066,11 @@  test multiple flags for single patch:
   Subject: [PATCH fooFlag barFlag] test
   X-Mercurial-Node: ff2c9fa2018b15fa74b33363bda9527323e2a99f
   X-Mercurial-Serie-index: 1
   X-Mercurial-Serie-total: 1
   Message-Id: <ff2c9fa2018b15fa74b3.60@*> (glob)
+  X-Mercurial-Serie-id: <ff2c9fa2018b15fa74b3.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
   Cc: bar
@@ -2052,10 +2103,11 @@  test multiple flags for multiple patches
   Content-Type: text/plain; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 0 of 2 fooFlag barFlag] test
   Message-Id: <patchbomb.60@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:00 +0000
   From: quux
   To: foo
   Cc: bar
@@ -2070,10 +2122,11 @@  test multiple flags for multiple patches
   X-Mercurial-Serie-index: 1
   X-Mercurial-Serie-total: 2
   Message-Id: <8580ff50825a50c8f716.61@*> (glob)
   In-Reply-To: <patchbomb.60@*> (glob)
   References: <patchbomb.60@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:01 +0000
   From: quux
   To: foo
   Cc: bar
@@ -2101,10 +2154,11 @@  test multiple flags for multiple patches
   X-Mercurial-Serie-index: 2
   X-Mercurial-Serie-total: 2
   Message-Id: <97d72e5f12c7e84f8506.62@*> (glob)
   In-Reply-To: <patchbomb.60@*> (glob)
   References: <patchbomb.60@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.60@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Thu, 01 Jan 1970 00:01:02 +0000
   From: quux
   To: foo
   Cc: bar
@@ -2140,10 +2194,11 @@  test multi-address parsing:
   Subject: [PATCH] test
   X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
   X-Mercurial-Serie-index: 1
   X-Mercurial-Serie-total: 1
   Message-Id: <8580ff50825a50c8f716.315532860@*> (glob)
+  X-Mercurial-Serie-id: <8580ff50825a50c8f716.315532860@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Tue, 01 Jan 1980 00:01:00 +0000
   From: quux
   To: spam <spam>, eggs, toast
   Cc: foo, bar@example.com, "A, B <>" <a@example.com>
@@ -2184,10 +2239,11 @@  test multi-byte domain parsing:
   Subject: [PATCH] test
   X-Mercurial-Node: 8580ff50825a50c8f716709acdf8de0deddcd6ab
   X-Mercurial-Serie-index: 1
   X-Mercurial-Serie-total: 1
   Message-Id: <8580ff50825a50c8f716.315532860@*> (glob)
+  X-Mercurial-Serie-id: <8580ff50825a50c8f716.315532860@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Tue, 01 Jan 1980 00:01:00 +0000
   From: quux
   To: bar@xn--nicode-2ya.com
   
@@ -2258,10 +2314,11 @@  test outgoing:
   Content-Type: text/plain; charset="us-ascii"
   MIME-Version: 1.0
   Content-Transfer-Encoding: 7bit
   Subject: [PATCH 0 of 6] test
   Message-Id: <patchbomb.315532860@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.315532860@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Tue, 01 Jan 1980 00:01:00 +0000
   From: test
   To: foo
   
@@ -2275,10 +2332,11 @@  test outgoing:
   X-Mercurial-Serie-index: 1
   X-Mercurial-Serie-total: 6
   Message-Id: <ff2c9fa2018b15fa74b3.315532861@*> (glob)
   In-Reply-To: <patchbomb.315532860@*> (glob)
   References: <patchbomb.315532860@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.315532860@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Tue, 01 Jan 1980 00:01:01 +0000
   From: test
   To: foo
   
@@ -2305,10 +2363,11 @@  test outgoing:
   X-Mercurial-Serie-index: 2
   X-Mercurial-Serie-total: 6
   Message-Id: <909a00e13e9d78b575ae.315532862@*> (glob)
   In-Reply-To: <patchbomb.315532860@*> (glob)
   References: <patchbomb.315532860@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.315532860@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Tue, 01 Jan 1980 00:01:02 +0000
   From: test
   To: foo
   
@@ -2342,10 +2401,11 @@  test outgoing:
   X-Mercurial-Serie-index: 3
   X-Mercurial-Serie-total: 6
   Message-Id: <a2ea8fc83dd8b93cfd86.315532863@*> (glob)
   In-Reply-To: <patchbomb.315532860@*> (glob)
   References: <patchbomb.315532860@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.315532860@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Tue, 01 Jan 1980 00:01:03 +0000
   From: test
   To: foo
   
@@ -2388,10 +2448,11 @@  test outgoing:
   X-Mercurial-Serie-index: 4
   X-Mercurial-Serie-total: 6
   Message-Id: <240fb913fc1b7ff15ddb.315532864@*> (glob)
   In-Reply-To: <patchbomb.315532860@*> (glob)
   References: <patchbomb.315532860@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.315532860@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Tue, 01 Jan 1980 00:01:04 +0000
   From: test
   To: foo
   
@@ -2418,10 +2479,11 @@  test outgoing:
   X-Mercurial-Serie-index: 5
   X-Mercurial-Serie-total: 6
   Message-Id: <5d5ef15dfe5e7bd3a4ee.315532865@*> (glob)
   In-Reply-To: <patchbomb.315532860@*> (glob)
   References: <patchbomb.315532860@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.315532860@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Tue, 01 Jan 1980 00:01:05 +0000
   From: test
   To: foo
   
@@ -2449,10 +2511,11 @@  test outgoing:
   X-Mercurial-Serie-index: 6
   X-Mercurial-Serie-total: 6
   Message-Id: <2f9fa9b998c5fe3ac2bd.315532866@*> (glob)
   In-Reply-To: <patchbomb.315532860@*> (glob)
   References: <patchbomb.315532860@*> (glob)
+  X-Mercurial-Serie-id: <patchbomb.315532860@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Tue, 01 Jan 1980 00:01:06 +0000
   From: test
   To: foo
   
@@ -2487,10 +2550,11 @@  dest#branch URIs:
   Subject: [PATCH] test
   X-Mercurial-Node: 2f9fa9b998c5fe3ac2bd9a2b14bfcbeecbc7c268
   X-Mercurial-Serie-index: 1
   X-Mercurial-Serie-total: 1
   Message-Id: <2f9fa9b998c5fe3ac2bd.315532860@*> (glob)
+  X-Mercurial-Serie-id: <2f9fa9b998c5fe3ac2bd.315532860@*> (glob)
   User-Agent: Mercurial-patchbomb/* (glob)
   Date: Tue, 01 Jan 1980 00:01:00 +0000
   From: test
   To: foo