Message ID | pull.1291.v2.git.git.1701360836307.gitgitgadget@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Commit | d9fd71fa2a82da40a9b58c4ecbc49aed06cb8953 |
Headers | show |
Series | [v2] hooks--pre-commit: detect non-ASCII when renaming | expand |
"Julian Prein via GitGitGadget" <gitgitgadget@gmail.com> writes: > From: Julian Prein <druckdev@protonmail.com> > > When diff.renames is turned on, the diff-filter will not return renamed > files (or copied ones with diff.renames=copy) and potential non-ASCII > characters would not be caught by this hook. > > Use the plumbing command diff-index instead of the porcelain one to not > be affected by diff.rename. Makes sense. An obvious alternative would be to pass "--no-renames" and keep using the Porcelain "git diff", but this is how the plumbing "diff-index" and friends are meant to be used. Looking good. Will queue. Thanks.
diff --git a/templates/hooks--pre-commit.sample b/templates/hooks--pre-commit.sample index e144712c85c..29ed5ee486a 100755 --- a/templates/hooks--pre-commit.sample +++ b/templates/hooks--pre-commit.sample @@ -28,7 +28,7 @@ if [ "$allownonascii" != "true" ] && # Note that the use of brackets around a tr range is ok here, (it's # even required, for portability to Solaris 10's /usr/bin/tr), since # the square bracket bytes happen to fall in the designated range. - test $(git diff --cached --name-only --diff-filter=A -z $against | + test $(git diff-index --cached --name-only --diff-filter=A -z $against | LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0 then cat <<\EOF