Author: gstein
Date: Fri Apr 19 23:20:54 2024
New Revision: 1917169
URL: http://svn.apache.org/viewvc?rev=1917169&view=rev
Log:
Omit the content of the diffs, when the message becomes too long. Just
rely on leaving a diff URL.
* tools/hook-scripts/mailer/mailer.py:
(Commit.long_commit): pass False for (new) NO_DIFF_CONTENT parameter
to generate_commit()
(Commit.short_commit): pass True for (new) NO_DIFF_CONTENT parameter
to generate_commit(), removing the generate_urls() call.
(generate_commit): accept a new NO_DIFF_CONTENT parameter, and pass
that into the generate_changelist_diffs() calls, along with
re-ordering the paramters. Also place NO_DIFF_CONTENT into the
DATA passed into render_commit().
(generate_urls): removed.
(generate_changelist_diffs): reorder the parameters to align with
those of generate_commit() (aesthetic; no functional change). Add
the NO_DIFF_CONTENT and skip construction of the diff generator.
(render_commit): place a large NOTE in the message when the diff
content is removed (due to length).
(_render_diffs): skip trying to output diff content when absent.
Modified:
subversion/trunk/tools/hook-scripts/mailer/mailer.py
Modified: subversion/trunk/tools/hook-scripts/mailer/mailer.py
URL:
http://svn.apache.org/viewvc/subversion/trunk/tools/hook-scripts/mailer/mailer.py?rev=1917169&r1=1917168&r2=1917169&view=diff
==============================================================================
--- subversion/trunk/tools/hook-scripts/mailer/mailer.py (original)
+++ subversion/trunk/tools/hook-scripts/mailer/mailer.py Fri Apr 19 23:20:54
2024
@@ -547,13 +547,13 @@ class Commit(Messenger):
def long_commit(writer):
# generate commit message (with diffs) for this group and params
- generate_commit(writer, self.cfg, self.repos, self.changelist,
+ generate_commit(writer, self.cfg, self.repos, self.changelist, False,
group, params, paths, iterpool)
def short_commit(writer):
# generate a shorter message, using URLs instead of diffs
- generate_urls(writer, self.cfg, self.repos, self.changelist,
- group, params, paths, iterpool)
+ generate_commit(writer, self.cfg, self.repos, self.changelist, True,
+ group, params, paths, iterpool)
failed |= output.send(subject_line, group, params,
long_commit, short_commit)
@@ -788,8 +788,8 @@ class DiffURLSelections:
return self._get_url('modify', repos_rev, change)
-def generate_commit(writer, cfg, repos, changelist, group, params, paths,
- pool):
+def generate_commit(writer, cfg, repos, changelist, no_diff_content,
+ group, params, paths, pool):
svndate = repos.get_rev_prop(svn.core.SVN_PROP_REVISION_DATE, pool)
### pick a different date format?
@@ -809,9 +809,10 @@ def generate_commit(writer, cfg, repos,
other_summary = None
if len(paths) != len(changelist) and show_nonmatching_paths == 'yes':
- other_diffs = generate_changelist_diffs(changelist, paths, False, cfg,
- repos, date, group, params,
- pool)
+ other_diffs = generate_changelist_diffs(cfg, repos, changelist,
+ no_diff_content, False,
+ group, params, paths,
+ date, pool)
else:
other_diffs = None
@@ -824,10 +825,12 @@ def generate_commit(writer, cfg, repos,
log=to_str(repos.get_rev_prop(svn.core.SVN_PROP_REVISION_LOG, pool) or
b''),
commit_url=commit_url,
summary=summary,
+ no_diff_content=no_diff_content,
show_nonmatching_paths=show_nonmatching_paths,
other_summary=other_summary,
- diffs=generate_changelist_diffs(changelist, paths, True, cfg, repos,
- date, group, params, pool),
+ diffs=generate_changelist_diffs(cfg, repos, changelist,
+ no_diff_content, True,
+ group, params, paths, date, pool),
other_diffs=other_diffs,
)
### clean this up in future rev. Just use wb
@@ -836,11 +839,6 @@ def generate_commit(writer, cfg, repos,
render_commit(w, wb, data)
-def generate_urls(writer, cfg, repos, changelist, group, params, paths,
- pool):
- writer.write('COMMIT MESSAGE USING URLS\n')
-
-
def generate_summary(changelist, paths, in_paths):
def gather_info(action):
return _gather_paths(action, changelist, paths, in_paths)
@@ -872,8 +870,9 @@ def _gather_paths(action, changelist, pa
return items
-def generate_changelist_diffs(changelist, paths, in_paths, cfg, repos,
- date, group, params, pool):
+def generate_changelist_diffs(cfg, repos, changelist,
+ no_diff_content, in_paths,
+ group, params, paths, date, pool):
"This is a generator returning diffs for each change."
diffsels = DiffSelections(cfg, group, params)
@@ -1005,7 +1004,7 @@ def generate_changelist_diffs(changelist
if diff:
binary = diff.either_binary()
- if binary:
+ if binary or no_diff_content:
content = src_fname = dst_fname = None
else:
src_fname, dst_fname = diff.get_files()
@@ -1110,6 +1109,12 @@ def render_commit(w, wb, data):
else:
w('and changes in other areas\n')
+ if data.no_diff_content:
+ w('\nNOTE: this message was too long when including "diff" contents.'
+ '\n The contents have been replaced with URLs to display the'
+ '\n diff contents on a web page.'
+ '\n\n')
+
_render_diffs(w, wb, data.diffs, '')
if data.other_diffs:
_render_diffs(w, wb, data.other_diffs,
@@ -1189,15 +1194,18 @@ def _render_diffs(w, wb, diffs, section_
if not diff.diff:
continue
- w(SEPARATOR + '\n')
-
if diff.binary:
+ w(SEPARATOR + '\n')
if diff.singular:
w('Binary file. No diff available.\n')
else:
w('Binary file (source and/or target). No diff available.\n')
continue
+ if diff.content is None:
+ continue
+
+ w(SEPARATOR + '\n')
for line in diff.content:
wb(line.raw)