diff options
author | Valentin Rothberg <valentinrothberg@gmail.com> | 2015-06-01 16:00:19 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-08-03 17:16:58 -0700 |
commit | a42fa92ce77a9181f9baf57655acbb241ac4d306 (patch) | |
tree | 7bbb6d5dd2e431e8c5160efa7ece478adf55b136 | |
parent | ccf97fe3ddac231655f1f8cacede6182a167de8b (diff) | |
download | linux-stable-a42fa92ce77a9181f9baf57655acbb241ac4d306.tar.gz linux-stable-a42fa92ce77a9181f9baf57655acbb241ac4d306.tar.bz2 linux-stable-a42fa92ce77a9181f9baf57655acbb241ac4d306.zip |
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 <valentinrothberg@gmail.com>
Acked-by: Stefan Hengelein <stefan.hengelein@fau.de>
Acked-by: Andreas Ruprecht <andreas.ruprecht@fau.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rwxr-xr-x | scripts/checkkconfigsymbols.py | 21 |
1 files changed, 21 insertions, 0 deletions
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).""" |