patman: add support for omitting bouncing addresses
PATCH v2 1/1 patman: add support for omitting bouncing addresses
Add support for reading a list of bouncing addresses from a in-tree file (doc/bounces) and from the ~/.patman config file. These addresses are stripped from the Cc list.
---
This version supports an in-tree doc/bounces file as well as a section in the .patman config file. A slight annoyance is the config file parser expects key: value pairs whereas the bounces file is just a flat list. I started looking a modeling this after the aliases but then I actually thought that if we do want to tag someone as a bouncing address we probably want to be explicit about it.
Changes in v2:
- better integration with existing configuration
- documentation
doc/bounces | 3 +++ tools/patman/README | 12 ++++++++++++ tools/patman/series.py | 2 ++ tools/patman/settings.py | 18 ++++++++++++++++++ 4 files changed, 35 insertions(+) create mode 100644 doc/bounces
doc/bounces new file +3 -0
@@ -0,0 +1,3 @@ +# List of addresses picked up by patman/get_maintainer.pl that are known to +# bounce. Addresses are listed one per line and need to match the author +# information recorded in git.
tools/patman/README +12 -0
@@ -84,6 +84,18 @@ Aliases are recursive. The checkpatch.pl in the U-Boot tools/ subdirectory will be located and used. Failing that you can put it into your path or ~/bin/checkpatch.pl +If you want to avoid sending patches to email addresses that are picked up +by patman but are known to bounce you can add a [bounces] section to your +.patman file. Unlike the [alias] section these are simple key: value pairs +that are not recursive. + +>>> + +[bounces] +gonefishing: Fred Bloggs <[email protected]> + +<<< + If you want to change the defaults for patman's command-line arguments, you can add a [settings] section to your .patman file. This can be used
tools/patman/series.py +2 -0
@@ -10,6 +10,7 @@ import os import get_maintainer import gitutil +import settings import terminal # Series-xxx tags that we understand
@@ -233,6 +234,7 @@ class Series(dict): cc += add_maintainers elif add_maintainers: cc += get_maintainer.GetMaintainer(commit.patch) + cc = set(cc) - set(settings.bounces) cc = [m.encode('utf-8') if type(m) != str else m for m in cc] all_ccs += cc print(commit.patch, ', '.join(set(cc)), file=fd)
tools/patman/settings.py +18 -0
@@ -269,6 +269,19 @@ def _ReadAliasFile(fname): if bad_line: print(bad_line) +def _ReadBouncesFile(fname): + """Read in the bounces file if it exists + + Args: + fname: Filename to read. + """ + if os.path.exists(fname): + with open(fname) as fd: + for line in fd: + if line.startswith('#'): + continue + bounces.add(line.strip()) + def Setup(parser, project_name, config_fname=''): """Set up the settings module by reading config files.
@@ -293,10 +306,15 @@ def Setup(parser, project_name, config_fname=''): for name, value in config.items('alias'): alias[name] = value.split(',') + _ReadBouncesFile('doc/bounces') + for name, value in config.items('bounces'): + bounces.add(value) + _UpdateDefaults(parser, config) # These are the aliases we understand, indexed by alias. Each member is a list. alias = {} +bounces = set() if __name__ == "__main__": import doctest
Signature · 1 line
2.14.1
PATCH v2 1/1 patman: add support for omitting bouncing addresses
Hi Chris,
Quoted 17 lines · Chris Packham
Add support for reading a list of bouncing addresses from a in-tree file (doc/bounces) and from the ~/.patman config file. These addresses are stripped from the Cc list.
Signed-off-by Chris Packham <[email protected]>---
This version supports an in-tree doc/bounces file as well as a section in the .patman config file. A slight annoyance is the config file parser expects key: value pairs whereas the bounces file is just a flat list. I started looking a modeling this after the aliases but then I actually thought that if we do want to tag someone as a bouncing address we probably want to be explicit about it.Changes in v2:
- better integration with existing configuration
- documentation
Quoted 7 lines
doc/bounces | 3 +++ tools/patman/README | 12 ++++++++++++ tools/patman/series.py | 2 ++ tools/patman/settings.py | 18 ++++++++++++++++++ 4 files changed, 35 insertions(+) create mode 100644 doc/bounces
Quoted 45 lines
doc/bounces new file +3
-0@@ -0,0 +1,3 @@ +# List of addresses picked up by patman/get_maintainer.pl that are known to +# bounce. Addresses are listed one per line and need to match the author +# information recorded in git.tools/patman/README +12
-0@@ -84,6 +84,18 @@ Aliases are recursive. The checkpatch.pl in the U-Boot tools/ subdirectory will be located and used. Failing that you can put it into your path or ~/bin/checkpatch.pl +If you want to avoid sending patches to email addresses that are picked up +by patman but are known to bounce you can add a [bounces] section to your +.patman file. Unlike the [alias] section these are simple key: value pairs +that are not recursive. + +>>> + +[bounces] +gonefishing: Fred Bloggs <[email protected]> + +<<< + If you want to change the defaults for patman's command-line arguments, you can add a [settings] section to your .patman file. This can be usedtools/patman/series.py +1
-0@@ -10,6 +10,7 @@ import os import get_maintainer import gitutil +import settings import terminal # Series-xxx tags that we understand
tools/patman/series.py class Series(dict): · line 237
Quoted 4 lines
tools/patman/series.py +1
-0@@ -233,6 +234,7 @@ class Series(dict): cc += add_maintainers elif add_maintainers: cc += get_maintainer.GetMaintainer(commit.patch) + cc = set(cc) - set(settings.bounces)
Can you please arrange for it to print out the email addresses that are skipped? I think it might be very confusing if someone tries to send to an address and it does not work.
Quoted 44 lines
tools/patman/series.py +0
-0cc = [m.encode('utf-8') if type(m) != str else m for m in cc] all_ccs += cc print(commit.patch, ', '.join(set(cc)), file=fd)tools/patman/settings.py +18
-1@@ -269,6 +269,19 @@ def _ReadAliasFile(fname): if bad_line: print(bad_line) +def _ReadBouncesFile(fname): + """Read in the bounces file if it exists + + Args: + fname: Filename to read. + """ + if os.path.exists(fname): + with open(fname) as fd: + for line in fd: + if line.startswith('#'): + continue + bounces.add(line.strip()) + def Setup(parser, project_name, config_fname=''): """Set up the settings module by reading config files.@@ -293,10 +306,15 @@ def Setup(parser, project_name, config_fname=''): for name, value in config.items('alias'): alias[name] = value.split(',') + _ReadBouncesFile('doc/bounces') + for name, value in config.items('bounces'): + bounces.add(value) + _UpdateDefaults(parser, config) # These are the aliases we understand, indexed by alias. Each member is a list. alias = {} +bounces = set() if __name__ == "__main__": import doctest --
Quoted 2 lines
2.14.1
Regards,
Simon