From patchwork Mon Apr 13 21:51:24 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Anderson X-Patchwork-Id: 237747 List-Id: U-Boot discussion From: seanga2 at gmail.com (Sean Anderson) Date: Mon, 13 Apr 2020 17:51:24 -0400 Subject: [PATCH v2 1/3] patman: Add option to suppress empty changelog entries In-Reply-To: <20200413215126.548213-1-seanga2@gmail.com> References: <20200413215126.548213-1-seanga2@gmail.com> Message-ID: <20200413215126.548213-2-seanga2@gmail.com> 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 existing behaviour could result in a changelog of Changes in v7: None Changes in v6: None Changes in v5: - Make a change Changes in v4: None Changes in v3: - New Changes in v2: None With this patch applied and with --no-empty-changes, the same patch would look like (no changes since v5) Changes in v5: - Make a change Changes in v3: - 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 --- Changes in v2: - Add a note when there are no changes in the current revision - Make this the default behaviour, and remove the option tools/patman/patchstream.py | 2 +- tools/patman/series.py | 40 +++++++++++++++++++++++++++---------- 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/tools/patman/patchstream.py b/tools/patman/patchstream.py index df3eb7483b..a83497d79f 100644 --- a/tools/patman/patchstream.py +++ b/tools/patman/patchstream.py @@ -340,7 +340,7 @@ 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) out += [line] diff --git a/tools/patman/series.py b/tools/patman/series.py index a15f7625ed..ca42e5e966 100644 --- a/tools/patman/series.py +++ b/tools/patman/series.py @@ -146,38 +146,56 @@ class Series(dict): Changes in v4: - Jog the dial back closer to the widget - Changes in v3: None Changes in v2: - Fix the widget - Jog the dial - etc. + If there are no new changes in a patch, a note will be added + + (no changes since v2) + + Changes in v2: + - Fix the widget + - Jog the dial """ + versions = sorted(self.changes, reverse=True) + newest_version = 1 + try: + newest_version = max(int(self.version), versions[0]) + except (IndexError, ValueError): + pass + final = [] process_it = self.get('process_log', '').split(',') process_it = [item.strip() for item in process_it] need_blank = False - for change in sorted(self.changes, reverse=True): + for version in versions: out = [] - for this_commit, text in self.changes[change]: + for this_commit, text in self.changes[version]: if commit and this_commit != commit: continue if 'uniq' not in process_it or text not in out: out.append(text) - line = 'Changes in v%d:' % change - have_changes = len(out) > 0 if 'sort' in process_it: out = sorted(out) + have_changes = len(out) > 0 + line = 'Changes in v%d:' % version if have_changes: out.insert(0, line) - else: - out = [line + ' None'] - if need_blank: - out.insert(0, '') + if version < newest_version: + out.insert(0, '') + out.insert(0, '(no changes since v%d)' % version) + newest_version = 0 + # Only add a new line if we output something + if need_blank: + out.insert(0, '') final += out need_blank = have_changes - if self.changes: + + if len(final) > 0: final.append('') + else: + final = ['(no changes since v1)', ''] return final def DoChecks(self):