有没有办法让预提交 Hook 自动格式化代码(对于使用 astyle
的示例)但 not 会破坏部分提交吗?
工作流程:
# edit a file.txt
git add -p file.txt
# add one chunk, but not another
git commit -m 'a message'
[PRE_COMMIT_HOOK] Formatting source code
git status
# the "another" chunk is still not added
我的问题是,如果你在 pre-commit 钩子(Hook)中执行 git add
,那就是脚本格式化源代码后需要,添加“另一个” block ,也。但我不想那样。
有没有办法做到这一点?
我会通过使用低级“管道”命令来完成这项工作,我的第一次尝试将类似于
git ls-files --stage \*.c | while read mode object stage path; do
case $mode in
10*)
formatted=`git show $object | indent | git hash-object -w --stdin`
git update-index --cacheinfo $mode $formatted "$path"
;;
esac
done
为避免冗余处理,请按照@torek 的建议从 git diff-index --name-only --diff-filter=AM
输出开始。
我是一名优秀的程序员,十分优秀!