[Python-checkins] hooks: Add a diff-blacklist option to omit selected files from email notification

local-hg python-checkins at python.org
Tue Jun 19 16:34:15 CEST 2012


http://hg.python.org/hooks/rev/885b48eeae7d
changeset: 81:885b48eeae7d
user: Antoine Pitrou <solipsis at pitrou.net>
date: Tue Jun 19 16:34:15 2012 +0200
summary:
 Add a diff-blacklist option to omit selected files from email notification diffs.
files:
 mail.py | 17 +++++++++++++++++
 1 files changed, 17 insertions(+), 0 deletions(-)
diff --git a/mail.py b/mail.py
--- a/mail.py
+++ b/mail.py
@@ -19,6 +19,7 @@
 BASE = 'http://hg.python.org/'
 CSET_URL = BASE + '%s/rev/%s'
 
+
 def send(sub, sender, to, body):
 msg = MIMEMultipart()
 msg['Subject'] = Header(sub, 'utf8')
@@ -45,6 +46,19 @@
 stripped.append(chunk)
 return stripped
 
+def strip_blacklisted_files(chunks, blacklisted):
+ stripped = []
+ for chunk in chunks:
+ lines = chunk.splitlines(True)
+ for i, line in enumerate(lines[:4]):
+ if (line.startswith('+++ b/') and
+ line[6:].rstrip() in blacklisted):
+ lines = lines[:i+1] + ['[stripped]\n']
+ chunk = ''.join(lines)
+ break
+ stripped.append(chunk)
+ return stripped
+
 def _incoming(ui, repo, **kwargs):
 # Ensure that no fancying of output is enabled (e.g. coloring)
 os.environ['TERM'] = 'dumb'
@@ -57,6 +71,8 @@
 else:
 colormod._styles.clear()
 
+ blacklisted = ui.config('mail', 'diff-blacklist', '').split()
+
 displayer = cmdutil.changeset_printer(ui, repo, False, False, True)
 ctx = repo[kwargs['node']]
 displayer.show(ctx)
@@ -83,6 +99,7 @@
 body.append(' ' + line)
 body += ['', '']
 diffchunks = strip_bin_diffs(diffchunks)
+ diffchunks = strip_blacklisted_files(diffchunks, blacklisted)
 body.append(''.join(chunk for chunk in diffchunks))
 
 body.append('-- ')
-- 
Repository URL: http://hg.python.org/hooks


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /