From patchwork Thu Mar 21 02:43:00 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Glass X-Patchwork-Id: 229536 X-Patchwork-Delegate: sjg@chromium.org Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id 861152C00BF for ; Thu, 21 Mar 2013 13:44:54 +1100 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id B52374A040; Thu, 21 Mar 2013 03:44:44 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id PXfZmGsUrB99; Thu, 21 Mar 2013 03:44:44 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id E412E4A08F; Thu, 21 Mar 2013 03:43:57 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 66EE74A03F for ; Thu, 21 Mar 2013 03:43:51 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id dWdPE4OLVyCC for ; Thu, 21 Mar 2013 03:43:50 +0100 (CET) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from mail-qa0-f73.google.com (mail-qa0-f73.google.com [209.85.216.73]) by theia.denx.de (Postfix) with ESMTPS id 491D64A02F for ; Thu, 21 Mar 2013 03:43:45 +0100 (CET) Received: by mail-qa0-f73.google.com with SMTP id g10so231991qah.0 for ; Wed, 20 Mar 2013 19:43:44 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-received:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references:x-gm-message-state; bh=8oK37mHKOO64WI6yXuBQYjpgsIvZsBlD/l93OKl9fS8=; b=Yqwa1DkdTSH3SuG5XznmgnGIAA2iqeP+He5DtNonNpmSWoccfw2IZuH+0HoicQt7yh xUdSqrmm+oSZDEP5g9PZyddtrsiZJSk7/eaKe03bnyhtMI4yznNU2LqaBcLGB12Rd5Yn 8UxdZmoBKfBFR+gA4vdwVzpoYXYBbya7ZnsAPSr1NM0M9u6788x+Ywcu43XDLCEHqijU 73rhXnHoDKn9GRdOSxUQm8YiS0qp3Gpc55lUmloC5JdouxSUcXcI77bj7i/J8Yg4ffcZ dzb1+2wIMrmvu8DNmHZytqzpof0NrPPE+GyBq6Xuq/cZ/2Pcw4yxf0LFAGpT8PXX42gP bQIA== X-Received: by 10.224.72.199 with SMTP id n7mr4803351qaj.5.1363833824705; Wed, 20 Mar 2013 19:43:44 -0700 (PDT) Received: from corp2gmr1-1.hot.corp.google.com (corp2gmr1-1.hot.corp.google.com [172.24.189.92]) by gmr-mx.google.com with ESMTPS id y8si2214320qcx.0.2013.03.20.19.43.44 (version=TLSv1.1 cipher=AES128-SHA bits=128/128); Wed, 20 Mar 2013 19:43:44 -0700 (PDT) Received: from kaka.mtv.corp.google.com (dhcp-172-22-162-57.mtv.corp.google.com [172.22.162.57]) by corp2gmr1-1.hot.corp.google.com (Postfix) with ESMTP id 5D34931C1B5; Wed, 20 Mar 2013 19:43:44 -0700 (PDT) Received: by kaka.mtv.corp.google.com (Postfix, from userid 121222) id 42482161011; Wed, 20 Mar 2013 19:43:44 -0700 (PDT) From: Simon Glass To: U-Boot Mailing List Date: Wed, 20 Mar 2013 19:43:00 -0700 Message-Id: <1363833781-14557-8-git-send-email-sjg@chromium.org> X-Mailer: git-send-email 1.8.1.3 In-Reply-To: <1363833781-14557-1-git-send-email-sjg@chromium.org> References: <1363833781-14557-1-git-send-email-sjg@chromium.org> X-Gm-Message-State: ALoCoQkT8I9mxwI4pbTk41CuxbKT3mqzULReu3r1RnfCuPjtUxLD1Z4amyB00rFS5CGGjQ3bhJ/mxZZX0uNvdJBpZ0Lvr1qR/3UwQIhs0IhiUP5qJJisUnCA65uZcx/Ijy20j6nMjPIy+GLRcxx6K8Tk8JuEHEsW73iUJwYHfZEfz6aXl5YJFpd3N+0VOGuqwmsJ2R5NMVVG Cc: Tom Rini Subject: [U-Boot] [PATCH 7/8] patman: Add Cover-letter-cc tag to Cc cover letter to people X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.11 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: u-boot-bounces@lists.denx.de Errors-To: u-boot-bounces@lists.denx.de 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 Reviewed-by: Doug Anderson --- tools/patman/README | 12 +++++++++++- tools/patman/patchstream.py | 8 ++++++++ tools/patman/series.py | 11 ++++++++--- 3 files changed, 27 insertions(+), 4 deletions(-) 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: + +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