From 6de10c98337df5343b6de5748fa6b4a1e80d7d55 Mon Sep 17 00:00:00 2001 From: firewave Date: Tue, 23 Sep 2025 20:41:01 +0200 Subject: [PATCH] triage_version.py: added `--diff` to print unified diff of output --- tools/triage_py/triage_version.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tools/triage_py/triage_version.py b/tools/triage_py/triage_version.py index ae41f19dcdf..c87af3bcdf8 100644 --- a/tools/triage_py/triage_version.py +++ b/tools/triage_py/triage_version.py @@ -4,6 +4,7 @@ import sys import argparse import time +import difflib from packaging.version import Version @@ -21,6 +22,7 @@ parser.add_argument('--no-quiet', action='store_true', default=False, help='do not specify -q') parser.add_argument('--perf', action='store_true', default=False, help='output duration of execution in seconds (CSV format)') parser.add_argument('--start', default=None, help='specify the start version/commit') +parser.add_argument('--diff', action='store_true', help='show differences as unified diff') package_group = parser.add_mutually_exclusive_group() package_group.add_argument('--no-stderr', action='store_true', default=False, help='do not display stdout') package_group.add_argument('--no-stdout', action='store_true', default=False, help='do not display stderr') @@ -110,8 +112,10 @@ def sort_commit_hashes(commits): if verbose: print("analyzing '{}'".format(input_file)) +last_udiff_version = '' last_ec = None last_out = None +last_udiff = None if args.perf: print('version,time') @@ -247,6 +251,7 @@ def sort_commit_hashes(commits): continue do_print = False + udiff = None if last_ec != ec: if verbose: @@ -257,10 +262,16 @@ def sort_commit_hashes(commits): if verbose: print("{}: output changed".format(version)) do_print = True + if args.diff: + udiff = difflib.unified_diff(last_out.splitlines(True), out.splitlines(True), fromfile=last_udiff_version, tofile=version) + last_udiff_version = version if do_print: print(last_ec) print(last_out) + if last_udiff: + sys.stdout.writelines(last_udiff) + sys.stdout.write('\n') # do not print intermediate versions with --compact if not args.compact or do_print: @@ -271,10 +282,15 @@ def sort_commit_hashes(commits): last_ec = ec last_out = out + if udiff: + last_udiff = udiff if do_compare: print(last_ec) print(last_out) + if last_udiff: + sys.stdout.writelines(last_udiff) + sys.stdout.write('\n') if verbose: print('done')