2013-09-04 7 views
7

私は思っていた以下の何(Gitのレポで)事前にプッシュフックを作成するための最良の方法である:糸くず/テストへの事前のプッシュフックを作成

  • 実行JSHint/JSLint
  • 実行ユニットテストと機能テスト
  • すべてがOKであれば、更新
  • を受け入れそうでなければあなたはGitは事前にフックをコミット使用することができ、更新
+2

Github(gitホスティングサービス)では、あなたのreposのホストされたコピーに任意のフックを追加することはできません。あなたのリポジトリの* local *版にフックを設定することは可能ですが、問題はGithub固有ではありません:) – Gareth

+2

フックを追加する唯一の方法は、[GitHub](http ://developer.github.com/v3/repos/hooks/#create-a-hook)? –

+0

まず、プッシュプッシュはプッシュを行うマシン上で実行されることに注意してください。プッシュプッシュはGithubになることはありません。 GithubがWeb Hookを提供している 'push'イベントは、リンク先のページの上部に表示されるように、実際にポスト受信としてトリガーされます。だから、それは本当に通知のためにのみ使用することができます – Gareth

答えて

2

を拒否 これを行う。私はデバッグステートメントなどをチェックするために事前コミットフックを設定しました。

このようなクライアントサイドフックは.git/hooksフォルダに属しています。しかし、バージョン管理の.gitリポジトリで何かをコミットすることはできないので、あなたは固執しています。

あなたがしなければならないことは、git repoのいくつかのフォルダ、例えばトップレベルのtoolsディレクトリの正しさをチェックするシェルコマンドを保持することです。

そして、「ただ」を介して、それをインストールするには、人々に伝える:

chmod u+x tools/precommit-checks.sh 

ln -s $PWD/tools/precommit-checks.sh .git/hooks/pre-commit 

と、誰もがそれをインストールし、あなたが求めるあなたのようなチェックをしていることを仮定し。

おそらくもっと良い方法は、このサーバー側をキャッチすることです.Githubリポジトリから最新のコミットを引き出し、コードベースをチェックする何らかの継続的な統合サーバーを用意することです。

いいえ、「拒否プッシュ」機能を提供しません。

自分でgit repoをホストしていたと仮定すると、別のしわもあります。私は、サーバー上でpre-receiveフックがフックがかかる限りクライアントをハングアップすると考えました。 (このであり、ポストレシーブフックの場合には真であると書かれているので、ここでもそうだと思います)。したがって、CIテストに2分かかる場合、開発者の中にはgit pushと入力し、コンソールが何かをやり直すのを2分間待っています。

したがって、CIサーバーや他の品質テストを使用してポストプッシュ解析を行う方がよいでしょう。

+1

これはなぜプッシュプッシュフックの代わりにプリコミットですか?プッシュプッシュフックとして、プッシュを拒否するオプションがあります - http://git-scm.com/docs/githooks#_pre-push –

+0

プッシュプッシュがクライアントマシンで発生した場合良い考え。それがサーバ上で起こった場合、pre-recieveのように、それがぶら下がっているという私の問題を見てください。しかし、プッシュプッシュは興味深いかもしれません。私はたくさんの仕事をして、さまざまな部分を抽出してコミットしています。プッシュプッシュは「はい、このコミットでユニットテストが失敗するのを知っています。あなたのローカルに追加する場合は、その機能(別名:git-bisectをたくさん使っているので、ユニットテストは合格) – RyanWilcox

+0

が必要な場合を除きます。git/hooks dir、すべてのフックはローカルです。プッシュプッシュが許可される直前にプッシュプッシュが実行され、実行されるスクリプトが0以外の何かを戻す場合、プッシュは取り消されます。 –

関連する問題