Jes*_*sen 11 svn git pre-commit-hook
是否可以为git或svn制作一个可以拒绝未在特定编码中提交的文件的预提交挂钩?
我曾经在几个项目上工作,坚持某种文件编码似乎是一个问题(例如UTF-8)
你的iconv可能会告诉你某些东西是不是UTF-8,但其他编码可能不那么容易(特别是像ISO-8859-1这样的8位单字节编码).
对于Git,您实际上可能需要更新挂钩而不是预提交挂钩(以便它可以在中央存储库中运行以强制执行规则).
Git pre-commit hook:
#!/bin/sh
git ls-files -z -- |
xargs -0 sh -c '
e=""
for f; do
if ! git show :"$f" |
iconv -f UTF-8 -t UTF-8 >/dev/null 2>&1; then
e=1
echo "Not UTF-8: $f"
#exit 255 # to abort after first non-UTF-8 file
fi
done
test -z "$e"
' -
Run Code Online (Sandbox Code Playgroud)
--
在git ls-files命令行之后放置一个或多个Git路径规范来限制检查的路径名.
要检查更新挂钩中更新的ref的提示,请使用git ls-tree --name-only -r -z $3 -- |
生成路径名(注意:它不处理模式路径规范,如git ls-files,因此在shell代码中执行任何基于模式的过滤)并git show "$3:$f"
提取文件内容.您可能还想检查提示提交,但每个新提交(每个提交的循环git rev-list ^$2 $3
而不是仅仅$3
).
归档时间: |
|
查看次数: |
3903 次 |
最近记录: |