diff options
| -rw-r--r-- | tools/patman/README | 12 | ||||
| -rw-r--r-- | tools/patman/patchstream.py | 8 | ||||
| -rw-r--r-- | tools/patman/series.py | 11 | 
3 files changed, 27 insertions, 4 deletions
| diff --git a/tools/patman/README b/tools/patman/README index 86d366fe9..9922f2a37 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 91542adb9..5c2d3bc9b 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 6c5c5702e..44ad931cf 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 |