Patchwork [U-Boot,v2,1/4] patman: Add a call to get_maintainer.pl if it exists

login
register
mail settings
Submitter Doug Anderson
Date Dec. 4, 2012, 12:43 a.m.
Message ID <1354581799-775-1-git-send-email-dianders@chromium.org>
Download mbox | patch
Permalink /patch/203520/
State Accepted
Commit 21a19d70e2c2aa45cfe62c6adf8ceee9fcfbcacb
Delegated to: Simon Glass
Headers show

Comments

Doug Anderson - Dec. 4, 2012, 12:43 a.m.
For Linux the best way to figure out where to send a patch is with the
"get_maintainer.pl" script.  Add support for calling it from patman.
Support is added unconditionally for "scripts/get_maintainer.pl" in
case it is helpful for any other projects.

Signed-off-by: Doug Anderson <dianders@chromium.org>
---
Changes in v2: None

 tools/patman/README            |   11 ++++++-
 tools/patman/get_maintainer.py |   63 ++++++++++++++++++++++++++++++++++++++++
 tools/patman/series.py         |    2 +
 3 files changed, 74 insertions(+), 2 deletions(-)
 create mode 100644 tools/patman/get_maintainer.py
Simon Glass - Jan. 31, 2013, 11:51 p.m.
On Tue, Dec 4, 2012 at 1:43 PM, Doug Anderson <dianders@chromium.org> wrote:
> For Linux the best way to figure out where to send a patch is with the
> "get_maintainer.pl" script.  Add support for calling it from patman.
> Support is added unconditionally for "scripts/get_maintainer.pl" in
> case it is helpful for any other projects.
>
> Signed-off-by: Doug Anderson <dianders@chromium.org>
> ---
> Changes in v2: None

Applied to u-boot-x86, thanks.

Patch

diff --git a/tools/patman/README b/tools/patman/README
index 5b6eba0..16b51eb 100644
--- a/tools/patman/README
+++ b/tools/patman/README
@@ -43,6 +43,9 @@  Series-to: fred.blogs@napier.co.nz
 
 in one of your commits, the series will be sent there.
 
+In Linux this will also call get_maintainer.pl on each of your
+patches automatically.
+
 
 How to use this tool
 ====================
@@ -65,8 +68,12 @@  will get a consistent result each time.
 How to configure it
 ===================
 
-For most cases patman will locate and use the file 'doc/git-mailrc' in
-your U-Boot directory. This contains most of the aliases you will need.
+For most cases of using patman for U-Boot developement patman will
+locate and use the file 'doc/git-mailrc' in your U-Boot directory.
+This contains most of the aliases you will need.
+
+For Linux the 'scripts/get_maintainer.pl' handles figuring out where
+to send patches pretty well.
 
 During the first run patman creates a config file for you by taking the default
 user name and email address from the global .gitconfig file.
diff --git a/tools/patman/get_maintainer.py b/tools/patman/get_maintainer.py
new file mode 100644
index 0000000..cb11373
--- /dev/null
+++ b/tools/patman/get_maintainer.py
@@ -0,0 +1,63 @@ 
+# Copyright (c) 2012 The Chromium OS Authors.
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+# MA 02111-1307 USA
+#
+
+import command
+import gitutil
+import os
+
+def FindGetMaintainer():
+    """Look for the get_maintainer.pl script.
+
+    Returns:
+        If the script is found we'll return a path to it; else None.
+    """
+    try_list = [
+        os.path.join(gitutil.GetTopLevel(), 'scripts'),
+        ]
+    # Look in the list
+    for path in try_list:
+        fname = os.path.join(path, 'get_maintainer.pl')
+        if os.path.isfile(fname):
+            return fname
+
+    return None
+
+def GetMaintainer(fname, verbose=False):
+    """Run get_maintainer.pl on a file if we find it.
+
+    We look for get_maintainer.pl in the 'scripts' directory at the top of
+    git.  If we find it we'll run it.  If we don't find get_maintainer.pl
+    then we fail silently.
+
+    Args:
+        fname: Path to the patch file to run get_maintainer.pl on.
+
+    Returns:
+        A list of email addresses to CC to.
+    """
+    get_maintainer = FindGetMaintainer()
+    if not get_maintainer:
+        if verbose:
+            print "WARNING: Couldn't find get_maintainer.pl"
+        return []
+
+    stdout = command.Output(get_maintainer, '--norolestats', fname)
+    return stdout.splitlines()
diff --git a/tools/patman/series.py b/tools/patman/series.py
index 083af0f..6c5c570 100644
--- a/tools/patman/series.py
+++ b/tools/patman/series.py
@@ -22,6 +22,7 @@ 
 import itertools
 import os
 
+import get_maintainer
 import gitutil
 import terminal
 
@@ -225,6 +226,7 @@  class Series(dict):
             if process_tags:
                 list += gitutil.BuildEmailList(commit.tags)
             list += gitutil.BuildEmailList(commit.cc_list)
+            list += get_maintainer.GetMaintainer(commit.patch)
             all_ccs += list
             print >>fd, commit.patch, ', '.join(list)
             self._generated_cc[commit.patch] = list