Commit a42fa92c authored by Valentin Rothberg's avatar Valentin Rothberg Committed by Greg Kroah-Hartman

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: default avatarValentin Rothberg <valentinrothberg@gmail.com>
Acked-by: default avatarStefan Hengelein <stefan.hengelein@fau.de>
Acked-by: default avatarAndreas Ruprecht <andreas.ruprecht@fau.de>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent ccf97fe3
...@@ -58,6 +58,11 @@ def parse_options(): ...@@ -58,6 +58,11 @@ def parse_options():
"input format bases on Git log's " "input format bases on Git log's "
"\'commmit1..commit2\'.") "\'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', parser.add_option('-i', '--ignore', dest='ignore', action='store',
default="", default="",
help="Ignore files matching this pattern. Note that " help="Ignore files matching this pattern. Note that "
...@@ -86,6 +91,9 @@ def parse_options(): ...@@ -86,6 +91,9 @@ def parse_options():
"'--force' if you\nwant to ignore this warning and " "'--force' if you\nwant to ignore this warning and "
"continue.") "continue.")
if opts.commit:
opts.find = False
if opts.ignore: if opts.ignore:
try: try:
re.match(opts.ignore, "this/is/just/a/test.c") re.match(opts.ignore, "this/is/just/a/test.c")
...@@ -129,12 +137,18 @@ def main(): ...@@ -129,12 +137,18 @@ def main():
if not feature in undefined_a: if not feature in undefined_a:
files = sorted(undefined_b.get(feature)) files = sorted(undefined_b.get(feature))
print "%s\t%s" % (feature, ", ".join(files)) 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 # check if there are new files that reference the undefined feature
else: else:
files = sorted(undefined_b.get(feature) - files = sorted(undefined_b.get(feature) -
undefined_a.get(feature)) undefined_a.get(feature))
if files: if files:
print "%s\t%s" % (feature, ", ".join(files)) print "%s\t%s" % (feature, ", ".join(files))
if opts.find:
commits = find_commits(feature, opts.diff)
print commits
# reset to head # reset to head
execute("git reset --hard %s" % head) execute("git reset --hard %s" % head)
...@@ -156,6 +170,13 @@ def execute(cmd): ...@@ -156,6 +170,13 @@ def execute(cmd):
return stdout 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(): def tree_is_dirty():
"""Return true if the current working tree is dirty (i.e., if any file has """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).""" been added, deleted, modified, renamed or copied but not committed)."""
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment