From badb79934aa88e88f13b001861ace939c03be97c Mon Sep 17 00:00:00 2001 From: Hans Pabst Date: Fri, 17 Oct 2025 13:24:45 +0200 Subject: [PATCH] Use git ls-files instead of os.walk with pattern - Avoids processing unrelated files. --- tools/precommit/precommit.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/tools/precommit/precommit.py b/tools/precommit/precommit.py index 8089d16ae2..bfad5ab4c5 100755 --- a/tools/precommit/precommit.py +++ b/tools/precommit/precommit.py @@ -62,8 +62,7 @@ def main() -> None: parser.add_argument("files", metavar="FILE", nargs="*", help="files to process") args = parser.parse_args() - # Say hello to the server. - print( + print( # Say hello to the server. f"Running precommit checks using {args.num_workers} workers and server: {SERVER}" ) server_hello = urlopen(Request(SERVER + "/"), timeout=10).read().decode("utf8") @@ -79,7 +78,18 @@ def main() -> None: if not file_list: sys.stdout.write("Searching for files...\r") sys.stdout.flush() - for root, dirs, files in os.walk("."): + + walk_list = [] + try: + output = subprocess.check_output(["git", "ls-files"], encoding="utf8") + for line in filter(None, output.split("\n")): + dir, file = os.path.split(line) + walk_list.append((os.path.join(".", dir), [dir], [file])) + except Exception: + walk_list = [] + pass + + for root, dirs, files in walk_list if walk_list else os.walk("."): if root.startswith("./tools/toolchain/build"): continue if root.startswith("./tools/toolchain/install"):