#!/bin/sh # # An example hook script to verify what is about to be committed. # Called by "git commit" with no arguments. The hook should # exit with non-zero status after issuing an appropriate message if # it wants to stop the commit. # # To enable this hook, rename this file to "pre-commit". if git rev-parse --verify HEAD >/dev/null 2>&1 then against=HEAD else # Initial commit: diff against an empty tree object against=$(git hash-object -t tree /dev/null) fi # We only filter the file name with c or cpp file. changed_files=$(git diff-index --cached $against | \ grep -E '[MA] .*\.(c|cpp|h)$' | cut -d' ' -f 2) if which clang-format > /dev/null; then if [ -n "$changed_files" ]; then echo "changed files: $changed_files" for file in $changed_files do clang-format -style=file -i $file git add $file done fi else echo "clang-format isn't exist, please install clang-format 14 first." fi