【发布时间】:2017-08-16 21:02:25
【问题描述】:
我正在努力避免意外地将二进制文件提交到我的存储库中。我考虑过一个检测文件大小超过某个阈值的钩子,但我认为每当我的提交更改具有可执行权限位的文件时,使预提交钩子失败会更有用。
我知道如何使用 python/ruby/其他脚本语言来解决这个问题,但理想情况下我可以只使用 bash。有什么想法吗?
【问题讨论】:
标签: bash file-permissions githooks
我正在努力避免意外地将二进制文件提交到我的存储库中。我考虑过一个检测文件大小超过某个阈值的钩子,但我认为每当我的提交更改具有可执行权限位的文件时,使预提交钩子失败会更有用。
我知道如何使用 python/ruby/其他脚本语言来解决这个问题,但理想情况下我可以只使用 bash。有什么想法吗?
【问题讨论】:
标签: bash file-permissions githooks
我最终得到了这个。它列出了相对于REPO_ROOT 提交的文件名。它将这些传递给ls,-1 标志用于每行一个,-F 标志将* 附加到可执行文件。它 greps 用于尾随 *。任何匹配的 grep 都会失败。
cd $REPO_ROOT
STAGED_EXECUTABLES=$(git diff --diff-filter=ACMRTUXB --cached HEAD --name-only | xargs ls -1F | egrep '\*$')
EXECUTABLES_MISSING=$?
if [ $EXECUTABLES_MISSING -eq 0 ]; then
echo "You tried to commit an executable file. Override with \`git commit --no-verify\` if required." > /dev/stderr
exit 1
fi
【讨论】: