From a42fa92ce77a9181f9baf57655acbb241ac4d306 Mon Sep 17 00:00:00 2001 From: Valentin Rothberg Date: Mon, 1 Jun 2015 16:00:19 +0200 Subject: [PATCH] checkkconfigsymbols.py: find relevant commits Add option -f/--find to find relevant commits when using the --diff option. --find is useful in case a user wants to check commits that potentially cause a Kconfig symbol to be missing. This is done via 'git log -G $SYMBOL' (i.e., to get a list of commits that change $SYMBOL). The relevant commits are printed below the "SYMBOL\tFILES" line, followed by an empty line to increase readability. Signed-off-by: Valentin Rothberg Acked-by: Stefan Hengelein Acked-by: Andreas Ruprecht Signed-off-by: Greg Kroah-Hartman --- scripts/checkkconfigsymbols.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/scripts/checkkconfigsymbols.py b/scripts/checkkconfigsymbols.py index c89fdcaf06e8..292848e32036 100755 --- a/scripts/checkkconfigsymbols.py +++ b/scripts/checkkconfigsymbols.py @@ -58,6 +58,11 @@ def parse_options(): "input format bases on Git log's " "\'commmit1..commit2\'.") + parser.add_option('-f', '--find', dest='find', action='store_true', + default=False, + help="Find and show commits that may cause symbols to be " + "missing. Required to run with --diff.") + parser.add_option('-i', '--ignore', dest='ignore', action='store', default="", help="Ignore files matching this pattern. Note that " @@ -86,6 +91,9 @@ def parse_options(): "'--force' if you\nwant to ignore this warning and " "continue.") + if opts.commit: + opts.find = False + if opts.ignore: try: re.match(opts.ignore, "this/is/just/a/test.c") @@ -129,12 +137,18 @@ def main(): if not feature in undefined_a: files = sorted(undefined_b.get(feature)) print "%s\t%s" % (feature, ", ".join(files)) + if opts.find: + commits = find_commits(feature, opts.diff) + print commits # check if there are new files that reference the undefined feature else: files = sorted(undefined_b.get(feature) - undefined_a.get(feature)) if files: print "%s\t%s" % (feature, ", ".join(files)) + if opts.find: + commits = find_commits(feature, opts.diff) + print commits # reset to head execute("git reset --hard %s" % head) @@ -156,6 +170,13 @@ def execute(cmd): return stdout +def find_commits(symbol, diff): + """Find commits changing %symbol in the given range of %diff.""" + commits = execute("git log --pretty=oneline --abbrev-commit -G %s %s" + % (symbol, diff)) + return commits + + def tree_is_dirty(): """Return true if the current working tree is dirty (i.e., if any file has been added, deleted, modified, renamed or copied but not committed).""" -- 2.39.5