summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tools/patman/README12
-rw-r--r--tools/patman/patchstream.py8
-rw-r--r--tools/patman/series.py11
3 files changed, 27 insertions, 4 deletions
diff --git a/tools/patman/README b/tools/patman/README
index 86d366fe9b..9922f2a37a 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 91542adb9b..5c2d3bc9b0 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 6c5c5702e8..44ad931cf8 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:
@@ -232,7 +236,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