13

チームで問題が発生しており、コードに TODO がある場合に git push を拒否する方法または git コマンドがあるかどうかを確認することにしました。何か案は?前もって感謝します。

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してプッシュを中止します:)

pre-receive フックの詳細については、http: //git-scm.com/book/en/Customizing-Git-Git-Hooks#Server-Side-Hooksを参照してください。

于 2012-12-14T11:11:51.400 に答える