[PATCH 1/2] patman: Add option to suppress empty changelog entries
Sean Anderson
seanga2 at gmail.com
Fri Mar 20 06:36:35 CET 2020
By default, patman outputs a line for every edition of the series in every
patch, regardless of whether any changes were made. This can result in many
redundant lines in patch changelogs, especially when a patch did not exist
before a certain revision. For example, the default behaviour could result
in a changelog of
Changes in v6:
- Make a change
Changes in v5: None
Changes in v4:
- New
Changes in v3: None
Changes in v2: None
Changes in v1: None
With this patch applied and with --no-empty-changes, the same patch would
look like
Changes in v6:
- Make a change
Changes in v4:
- New
This is entirely aesthetic, but I think it reduces clutter, especially for
patches added later on in a series.
Signed-off-by: Sean Anderson <seanga2 at gmail.com>
---
tools/patman/func_test.py | 2 +-
tools/patman/patchstream.py | 15 ++++++++-------
tools/patman/patman.py | 7 +++++--
tools/patman/series.py | 12 +++++++-----
tools/patman/test.py | 2 +-
5 files changed, 22 insertions(+), 16 deletions(-)
diff --git a/tools/patman/func_test.py b/tools/patman/func_test.py
index 76319fff37..0a8dc9b661 100644
--- a/tools/patman/func_test.py
+++ b/tools/patman/func_test.py
@@ -149,7 +149,7 @@ class TestFunctional(unittest.TestCase):
series = patchstream.GetMetaDataForTest(text)
cover_fname, args = self.CreatePatchesForTest(series)
with capture() as out:
- patchstream.FixPatches(series, args)
+ patchstream.FixPatches(series, args, False)
if cover_fname and series.get('cover'):
patchstream.InsertCoverLetter(cover_fname, series, count)
series.DoChecks()
diff --git a/tools/patman/patchstream.py b/tools/patman/patchstream.py
index df3eb7483b..3d83ed6adb 100644
--- a/tools/patman/patchstream.py
+++ b/tools/patman/patchstream.py
@@ -62,7 +62,7 @@ class PatchStream:
unwanted tags or inject additional ones. These correspond to the two
phases of processing.
"""
- def __init__(self, series, name=None, is_log=False):
+ def __init__(self, series, empty_changes=True, name=None, is_log=False):
self.skip_blank = False # True to skip a single blank line
self.found_test = False # Found a TEST= line
self.lines_after_test = 0 # MNumber of lines found after TEST=
@@ -78,6 +78,7 @@ class PatchStream:
self.state = STATE_MSG_HEADER # What state are we in?
self.signoff = [] # Contents of signoff line
self.commit = None # Current commit
+ self.empty_changes = empty_changes # Whether to output empty changes
def AddToSeries(self, line, name, value):
"""Add a new Series-xxx tag.
@@ -340,9 +341,9 @@ class PatchStream:
elif line == '---':
self.state = STATE_DIFFS
- # Output the tags (signeoff first), then change list
+ # Output the tags (signoff first), then change list
out = []
- log = self.series.MakeChangeLog(self.commit)
+ log = self.series.MakeChangeLog(self.commit, self.empty_changes)
out += [line]
if self.commit:
out += self.commit.notes
@@ -495,7 +496,7 @@ def GetMetaDataForTest(text):
ps.Finalize()
return series
-def FixPatch(backup_dir, fname, series, commit):
+def FixPatch(backup_dir, fname, series, commit, empty_changes):
"""Fix up a patch file, by adding/removing as required.
We remove our tags from the patch file, insert changes lists, etc.
@@ -513,7 +514,7 @@ def FixPatch(backup_dir, fname, series, commit):
handle, tmpname = tempfile.mkstemp()
outfd = os.fdopen(handle, 'w', encoding='utf-8')
infd = open(fname, 'r', encoding='utf-8')
- ps = PatchStream(series)
+ ps = PatchStream(series, empty_changes=empty_changes)
ps.commit = commit
ps.ProcessStream(infd, outfd)
infd.close()
@@ -525,7 +526,7 @@ def FixPatch(backup_dir, fname, series, commit):
shutil.move(tmpname, fname)
return ps.warn
-def FixPatches(series, fnames):
+def FixPatches(series, fnames, empty_changes):
"""Fix up a list of patches identified by filenames
The patch files are processed in place, and overwritten.
@@ -541,7 +542,7 @@ def FixPatches(series, fnames):
commit = series.commits[count]
commit.patch = fname
commit.count = count
- result = FixPatch(backup_dir, fname, series, commit)
+ result = FixPatch(backup_dir, fname, series, commit, empty_changes)
if result:
print('%d warnings for %s:' % (len(result), fname))
for warn in result:
diff --git a/tools/patman/patman.py b/tools/patman/patman.py
index cf53e532dd..6f92c5b7f3 100755
--- a/tools/patman/patman.py
+++ b/tools/patman/patman.py
@@ -61,7 +61,10 @@ parser.add_option('--no-check', action='store_false', dest='check_patch',
default=True,
help="Don't check for patch compliance")
parser.add_option('--no-tags', action='store_false', dest='process_tags',
- default=True, help="Don't process subject tags as aliaes")
+ default=True, help="Don't process subject tags as aliases")
+parser.add_option('--no-empty-changes', action = 'store_false',
+ dest='empty_changes', default=True,
+ help="Suppress empty change entries in patch changelogs")
parser.add_option('--smtp-server', type='str',
help="Specify the SMTP server to 'git send-email'")
parser.add_option('-T', '--thread', action='store_true', dest='thread',
@@ -146,7 +149,7 @@ else:
series)
# Fix up the patch files to our liking, and insert the cover letter
- patchstream.FixPatches(series, args)
+ patchstream.FixPatches(series, args, options.empty_changes)
if cover_fname and series.get('cover'):
patchstream.InsertCoverLetter(cover_fname, series, options.count)
diff --git a/tools/patman/series.py b/tools/patman/series.py
index a15f7625ed..24538e8895 100644
--- a/tools/patman/series.py
+++ b/tools/patman/series.py
@@ -137,7 +137,7 @@ class Series(dict):
if cmd:
print('Git command: %s' % cmd)
- def MakeChangeLog(self, commit):
+ def MakeChangeLog(self, commit, empty_changes):
"""Create a list of changes for each version.
Return:
@@ -151,7 +151,8 @@ class Series(dict):
- Fix the widget
- Jog the dial
- etc.
+ etc. If empty_changes is False, suppress output of versions without
+ any changes.
"""
final = []
process_it = self.get('process_log', '').split(',')
@@ -170,9 +171,10 @@ class Series(dict):
out = sorted(out)
if have_changes:
out.insert(0, line)
- else:
- out = [line + ' None']
- if need_blank:
+ elif empty_changes:
+ out.insert(0, ' None')
+ # Only add a new line if we output something
+ if need_blank and (empty_changes or have_changes):
out.insert(0, '')
final += out
need_blank = have_changes
diff --git a/tools/patman/test.py b/tools/patman/test.py
index 889e186606..610ffaede6 100644
--- a/tools/patman/test.py
+++ b/tools/patman/test.py
@@ -89,7 +89,7 @@ Signed-off-by: Simon Glass <sjg at chromium.org>
com.change_id = 'I80fe1d0c0b7dd10aa58ce5bb1d9290b6664d5413'
com.count = -1
- patchstream.FixPatch(None, inname, series.Series(), com)
+ patchstream.FixPatch(None, inname, series.Series(), com, False)
rc = os.system('diff -u %s %s' % (inname, expname))
self.assertEqual(rc, 0)
--
2.25.1
More information about the U-Boot
mailing list