web-dev-qa-db-ja.com

gitでコミットメッセージ形式を適用する

Gitでコミットメッセージ形式を強制するにはどうすればよいですか?

これをリポジトリレベルで設定して、ブランチを作成するすべての人がこの強制を受けることができますか?

13
Venu Madhav

Git ProBook " Gitのカスタマイズ-Git-Enforcedポリシーの例 "で説明されているように、このような施行はhook、より具体的には、updateのようなserver-sideフック:

サーバー側のすべての作業は、hooksディレクトリのupdateファイルに送られます。 updateフックは、プッシュされるブランチごとに1回実行され、次の3つの引数を取ります。

  • プッシュ先の参照の名前
  • そのブランチがあった古いリビジョン
  • プッシュされている新しいリビジョン

これは、クライアント側のフック(pre-commitのようなもの)よりも優先されます。

  • 各ユーザーが手動で設定する必要があります
  • バイパスすることができます

サーバー側のフックは、特定のリポジトリに対して、ポリシーが尊重されていない場合にgit Pushを拒否することで、必要なルールを適用します。

これは、ユーザーがプッシュしているリモートリポジトリホスティングサーバーを制御できることを前提としています。

そうでない場合は、クライアント側の事前コミットフックに戻ります。これは、gitテンプレートを介して設定できます そのテンプレートディレクトリはすべてのユーザー間で共有できます(git 2.9以降、2016年6月)

3
VonC

サーバー側のGitフックがソリューションですが、フック(および通常はサーバー)の設定と保​​守のオーバーヘッドもあります。

SaaSソリューション(サーバー側のGitフック用)を探している場合-これはまさに Datree *があなたのためにできることです。

*免責事項:私は@ Datreeの共同創設者兼製品リーダーですが、アクティブなオープンソースの貢献者としてこの苦痛に精通しています。この問題についてのブログ投稿も書きました--- Gitコミットメッセージを最大限に活用する方法

2
eyarz