[CI][format] Explicitly pass extensions to git-clang-format (#95794)

This ensures that the CI script controls which file extensions are
considered instead of letting git-clang-format apply its own filtering
rules. In particular, this properly handles libc++ extension-less
headers which were passed to git-clang-format, but then dropped by that
tool as having an unrecognized extension.
This commit is contained in:
Louis Dionne
2024-06-17 16:20:58 -04:00
committed by GitHub
parent 7ddff3a586
commit 7620fe0d2d

View File

@@ -216,6 +216,17 @@ class ClangFormatHelper(FormatHelper):
cf_cmd.append(args.start_rev)
cf_cmd.append(args.end_rev)
# Gather the extension of all modified files and pass them explicitly to git-clang-format.
# This prevents git-clang-format from applying its own filtering rules on top of ours.
extensions = set()
for file in cpp_files:
_, ext = os.path.splitext(file)
extensions.add(
ext.strip(".")
) # Exclude periods since git-clang-format takes extensions without them
cf_cmd.append("--extensions")
cf_cmd.append("'{}'".format(",".join(extensions)))
cf_cmd.append("--")
cf_cmd += cpp_files