patman: Add a call to get_maintainer.pl if it exists

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>
master
Doug Anderson 12 years ago committed by Simon Glass
parent 3118725515
commit 21a19d70e2
  1. 11
      tools/patman/README
  2. 63
      tools/patman/get_maintainer.py
  3. 2
      tools/patman/series.py

@ -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.

@ -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()

@ -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

Loading…
Cancel
Save