【发布时间】:2012-12-02 09:11:40
【问题描述】:
我们的团队遇到了问题,我们决定检查是否有方法或 git 命令来拒绝代码中存在 TODO 的 git push。 有任何想法吗? 提前致谢。
【问题讨论】:
我们的团队遇到了问题,我们决定检查是否有方法或 git 命令来拒绝代码中存在 TODO 的 git push。 有任何想法吗? 提前致谢。
【问题讨论】:
不可能在 github 中使用 pre-receive 钩子,所以我们在客户端使用 pre-commit 钩子: http://git-scm.com/book/en/Customizing-Git-Git-Hooks#Client-Side-Hooks
我们的预提交脚本(基于http://mark-story.com/posts/view/using-git-commit-hooks-to-prevent-stupid-mistakes)如下所示:
#!/bin/sh
for FILE in `git diff-index -p -M --name-status HEAD -- | cut -c3-` ; do
if [ "grep 'TODO' $FILE" ]
then
echo $FILE ' contains TODO'
exit 1
fi
done
exit
我们有这个脚本在我们的控制版本系统下,并在 .git/hooks 中创建一个指向它的符号链接
感谢您的帮助:)
编辑:由于 if 语句中的 grep 行为,我们需要编辑脚本:
#!/bin/sh
for FILE in `git diff --name-only --cached`; do
grep 'TODO' $FILE 2>&1 >/dev/null
if [ $? -eq 0 ]; then
echo $FILE ' contains TODO'
exit 1
fi
done
exit
【讨论】:
chmod +x .git/hooks/pre-commit
服务器上的预接收钩子,grep文件并中止推送:)
有关预接收挂钩的更多信息可以在这里找到:http://git-scm.com/book/en/Customizing-Git-Git-Hooks#Server-Side-Hooks
【讨论】: