31

弊社ではsvnからgitに移行中です。問題の追跡には Atlassian の JIRA を使用しています。

ここで、すべてのコミット メッセージに課題番号が含まれるようにする必要があります (svn で行ったように)。

問題番号が含まれていない場合にコミットを拒否するために使用する commit-msg フックが見つかりました。

JIRA は FishEye を使用して git リポジトリをスキャンします。コミット メッセージに課題番号が含まれている場合、変更はその課題の下に表示されます。

問題は、git リポジトリのクローンを作成するときにフックがコピーされないことです。そのため、コミット メッセージ内の問題番号は適用されません。つまり、新しいコミットがアップストリームにプッシュされると、Jira は課題の下に変更をリストしない場合があります。

質問は; どういうわけか間違った方法で Git を使用していますか?コミット メッセージで問題番号を実際に強制する方法はありますか? それとも、これを実現するスクリプト/フック(commit-msgフック以外)を持っている人はいますか?

4

6 に答える 6

15

私はgit-jira-hookを使用し、それを自分のニーズに合わせて変更しました。これはあなたにも役立つはずです。必要に応じて、Jira にログインする部分を削除して、コミット メッセージから正規表現された Jira 課題番号が有効かどうかを確認します。Python が好きではなく (git-jira-hook は python で記述されています)、bash を好む場合は、各リポジトリの .git/hooks ディレクトリにあるサンプル スクリプトをニーズに合わせて調整できるはずです。

誰にとっても機能するものを実装するために、上流リポジトリの「更新」フックとして git-jira-hook を使用したいと考えています。これにより、適切な jira 課題参照がないコミット メッセージを含むプッシュがブロックされます。(プッシュ時ではなく) コミット時に不足している課題参照に関するフィードバックを取得する方が便利であるため、開発者に commit-msg フックとして git-jira-hook をインストールしてもらう必要があります。これをグローバルに行う方法については後で説明します。

この問題を解決した方法は次のとおりです。

  1. プライベート リポジトリの commit-msg フック: git-jira-hook を変更して、使用する表記法で jira 課題の参照を確認しました。次に、この SO questionで説明されているように、フックをグローバルにインストールする方法を説明する指示を記載したフックを電子メールで送信しました。フックをグローバルにインストールすると、将来のすべてのクローンで使用され、git init を使用して既にクローンされたリポジトリに簡単に適用できます。

  2. アップストリーム リポジトリ更新フック: 既に変更された git-jira-hook スクリプトを使用し、各リポジトリにインストールしました。アップストリーム リポジトリ (シンボリック リンク) で動作するインタラクティブな認証ビットを取得できなかったため、代わりに制限付きのアクセス許可 Jira ユーザーを作成し、その認証をスクリプトにハード コードしました。

于 2013-03-05T21:30:58.050 に答える
1

サーバー側のフック、pre-receive-hook なども使用できますが、github に慣れている場合、これは明らかではありません。

それができない場合は、'install-hooks' ビルド オプション (rake タスク、make タスクなど) を提供することを検討するかもしれませんが、ビルドがバージョン管理システムに関連付けられているため、少し「汚い」と感じるでしょう。 ...

于 2012-07-06T15:53:37.553 に答える
0

そのためのアドオンがあります: Commit Policy Plugin for JIRA !

JIRA 課題キーがメッセージに「正式に」含まれているかどうかを確認するだけでなく、対応する課題が JQL クエリと一致するかどうかも確認します。これを使用すると、特定の課題タイプ、特定のステータスの課題、現在のスクラム スプリントの課題、次のバージョンを対象とする課題などに対してのみチェックできるようにするなど、さまざまな可能性があります。

ここに画像の説明を入力

おまけとして、元のバージョン管理システム ( Subversion ) とターゲットのバージョン管理システム ( Git ) の両方で動作するため、移行期間中も作業を管理できます。

フック スクリプトは、祝福されたリポジトリと任意のフォークにインストールできます。残念ながら、Git でレポを複製する場合、フック スクリプトは複製されませんが、現在、この問題の回避策を調査しています。

完全なドキュメント: http://www.midori-global.com/products/jira-commit-policy-plugin/documentation/

免責事項: これは JIRA の商用およびサポート対象のアドオンであり、私はこれに取り組んでいる開発者です。

于 2015-08-12T09:43:34.953 に答える