13

我们的团队遇到了一个问题,我们决定检查是否有方法或 git 命令来拒绝代码中存在 TODO 的 git push。有任何想法吗?提前致谢。

4

2 回答 2

18

不可能在 github 中使用 pre-receive 钩子,所以我们在客户端使用 pre-commit 钩子:http: //git-scm.com/book/en/Customizing-Git-Git-Hooks#Client-Side-挂钩

我们的预提交脚本(基于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
于 2012-12-17T10:33:26.413 回答
4

服务器上的预接收挂钩,grep 文件并中止推送 :)

可以在此处找到有关预接收挂钩的更多信息:http: //git-scm.com/book/en/Customizing-Git-Git-Hooks#Server-Side-Hooks

于 2012-12-14T11:11:51.400 回答