3

では、JIRA アイテムを参照するメッセージをチェックする pre-commit フックを追加する方法を理解しました。

#!/bin/sh
test "" != "$(grep 'JIRA-' "$1")" || {
        echo >&2 "ERROR: Commit message is missing Jira issue number."
        exit 1
}

これをローカルレポに追加すると、すべてクールです。私が行うすべてのコミットには、このコミットメッセージがあります。ただし、多くの開発者がすべてローカル リポジトリにコミットし、GitHub のリモート マスターにプッシュ/プルしている状況に興味があります。私が望むのは、プッシュが GitLab のリモート リポジトリに変更されたときに、同様に JIRA を参照する必要がある同様のメカニズムです。

これを行う良い方法は何ですか?

4

2 に答える 2

3

よる Sytse Sijbrandij回答で述べられ、「GitLab Enterprise Edition」ページで詳しく説明されているように、GitLab EE は現在以下をサポートしています。

Git フック ルール(コミット メッセージで問題を言及する必要がある、タグの削除を防止するなど)

ただし、これはコミュニティ エディション (CE) ではなく、エンタープライズエディション (EE) です。
後者については、私の元の回答を参照してください。


元の回答 (2013 年 8 月)

pre-receivegitlab が管理するベア リポジトリにプッシュされたコミットをブロックするフックを追加できます。

ただし、そのスレッドが示すように、GitLab を介して作成された新しいプロジェクト (およびリポジトリ) にそのフックを追加することは困難です。

GitLab はもう gitolite を使用していないため、これを行うための簡単またはネイティブな方法はありません (現在 5.X および 6.0)。

今のところ、hooks ディレクトリにフックを投げて、https://github.com/gitlabhq/gitlab-shell/blob/master/lib/gitlab_projects.rb#L46gitlab-shellを変更して反映させることができます。

Gitlab-Shell/lib/gitlab_projects.rb

def create_hooks_cmd
  pr_hook_path = File.join(ROOT_PATH, 'hooks', 'post-receive')
  up_hook_path = File.join(ROOT_PATH, 'hooks', 'update')
  "ln -s #{pr_hook_path} #{full_path}/hooks/post-receive && ln -s #{up_hook_path} #{full_path}/hooks/update"
end

そこに私たち自身の集中​​化されたフックを取得します。

于 2013-08-19T21:29:43.080 に答える