Patchwork [U-Boot,7/8] patman: Add Cover-letter-cc tag to Cc cover letter to people

login
register
mail settings
Submitter Simon Glass
Date March 21, 2013, 2:43 a.m.
Message ID <1363833781-14557-8-git-send-email-sjg@chromium.org>
Download mbox | patch
Permalink /patch/229536/
State Accepted, archived
Delegated to: Simon Glass
Headers show

Comments

Simon Glass - March 21, 2013, 2:43 a.m.
The cover letter is sent to everyone who is on the Cc list for any of
the patches in the series. Sometimes it is useful to send just the cover
letter to additional people, so that they are aware of the series, but
don't need to wade through all the individual patches.

Add a new Cover-letter-cc tag for this purpose.

Signed-off-by: Simon Glass <sjg@chromium.org>
---
 tools/patman/README         | 12 +++++++++++-
 tools/patman/patchstream.py |  8 ++++++++
 tools/patman/series.py      | 11 ++++++++---
 3 files changed, 27 insertions(+), 4 deletions(-)
Doug Anderson - March 21, 2013, 3:46 a.m.
Simon,

On Wed, Mar 20, 2013 at 7:43 PM, Simon Glass <sjg@chromium.org> wrote:
> The cover letter is sent to everyone who is on the Cc list for any of
> the patches in the series. Sometimes it is useful to send just the cover
> letter to additional people, so that they are aware of the series, but
> don't need to wade through all the individual patches.
>
> Add a new Cover-letter-cc tag for this purpose.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
> ---
>  tools/patman/README         | 12 +++++++++++-
>  tools/patman/patchstream.py |  8 ++++++++
>  tools/patman/series.py      | 11 ++++++++---
>  3 files changed, 27 insertions(+), 4 deletions(-)

Identical to the already posted
<http://patchwork.ozlabs.org/patch/222755/> so I'll repeat my existing
review.  ;)

Reviewed-by: Doug Anderson <dianders@chromium.org>

Patch

diff --git a/tools/patman/README b/tools/patman/README
index c0657bc..d4e7f36 100644
--- a/tools/patman/README
+++ b/tools/patman/README
@@ -182,6 +182,10 @@  END
 	Sets the cover letter contents for the series. The first line
 	will become the subject of the cover letter
 
+Cover-letter-cc: email / alias
+	Additional email addresses / aliases to send cover letter to (you
+	can add this multiple times)
+
 Series-notes:
 blah blah
 blah blah
@@ -263,7 +267,13 @@  will create a patch which is copied to x86, arm, sandbox, mikef, ag and
 afleming.
 
 If you have a cover letter it will get sent to the union of the CC lists of
-all of the other patches.
+all of the other patches. If you want to sent it to additional people you
+can add a tag:
+
+Cover-letter-cc: <list of addresses>
+
+These people will get the cover letter even if they are not on the To/Cc
+list for any of the patches.
 
 
 Example Work Flow
diff --git a/tools/patman/patchstream.py b/tools/patman/patchstream.py
index 76f815b..a4f2f31 100644
--- a/tools/patman/patchstream.py
+++ b/tools/patman/patchstream.py
@@ -42,6 +42,9 @@  re_signoff = re.compile('^Signed-off-by:')
 # The start of the cover letter
 re_cover = re.compile('^Cover-letter:')
 
+# A cover letter Cc
+re_cover_cc = re.compile('^Cover-letter-cc: *(.*)')
+
 # Patch series tag
 re_series = re.compile('^Series-(\w*): *(.*)')
 
@@ -153,6 +156,7 @@  class PatchStream:
         # Handle state transition and skipping blank lines
         series_match = re_series.match(line)
         commit_match = re_commit.match(line) if self.is_log else None
+        cover_cc_match = re_cover_cc.match(line)
         tag_match = None
         if self.state == STATE_PATCH_HEADER:
             tag_match = re_tag.match(line)
@@ -205,6 +209,10 @@  class PatchStream:
             self.in_section = 'cover'
             self.skip_blank = False
 
+        elif cover_cc_match:
+            value = cover_cc_match.group(1)
+            self.AddToSeries(line, 'cover-cc', value)
+
         # If we are in a change list, key collected lines until a blank one
         elif self.in_change:
             if is_blank:
diff --git a/tools/patman/series.py b/tools/patman/series.py
index fab17c9..fe919be 100644
--- a/tools/patman/series.py
+++ b/tools/patman/series.py
@@ -27,7 +27,8 @@  import gitutil
 import terminal
 
 # Series-xxx tags that we understand
-valid_series = ['to', 'cc', 'version', 'changes', 'prefix', 'notes', 'name'];
+valid_series = ['to', 'cc', 'version', 'changes', 'prefix', 'notes', 'name',
+                'cover-cc']
 
 class Series(dict):
     """Holds information about a patch series, including all tags.
@@ -43,6 +44,7 @@  class Series(dict):
     def __init__(self):
         self.cc = []
         self.to = []
+        self.cover_cc = []
         self.commits = []
         self.cover = None
         self.notes = []
@@ -69,6 +71,7 @@  class Series(dict):
             value: Tag value (part after 'Series-xxx: ')
         """
         # If we already have it, then add to our list
+        name = name.replace('-', '_')
         if name in self:
             values = value.split(',')
             values = [str.strip() for str in values]
@@ -140,7 +143,8 @@  class Series(dict):
         print 'Prefix:\t ', self.get('prefix')
         if self.cover:
             print 'Cover: %d lines' % len(self.cover)
-            all_ccs = itertools.chain(*self._generated_cc.values())
+            cover_cc = gitutil.BuildEmailList(self.get('cover_cc', ''))
+            all_ccs = itertools.chain(cover_cc, *self._generated_cc.values())
             for email in set(all_ccs):
                     print '      Cc: ',email
         if cmd:
@@ -235,7 +239,8 @@  class Series(dict):
             self._generated_cc[commit.patch] = list
 
         if cover_fname:
-            print >>fd, cover_fname, ', '.join(set(all_ccs))
+            cover_cc = gitutil.BuildEmailList(self.get('cover_cc', ''))
+            print >>fd, cover_fname, ', '.join(set(cover_cc + all_ccs))
 
         fd.close()
         return fname