マージリクエストのタイトル検証
- プラン: Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
マージリクエストのタイトルに命名規則を適用するには、RE2正規表現パターンと照合します。プロジェクトのタイトルパターンを設定すると、そのパターンに一致しないマージリクエストはマージがブロックされます。
タイトル検証の使用目的:
- タイトルにJiraまたはイシュートラッカーのチケット参照を必須とします。
- conventional commitの書式を適用します。
- リリースマネージメントまたはガバナンスワークフローのタイトルプレフィックスを標準化します。
マージリクエストのタイトル検証を設定する
プロジェクト内のすべてのマージリクエストのタイトルがマージされる前に一致する必要がある正規表現パターンを設定します。
前提条件:
- プロジェクトのメンテナーまたはオーナーのロール。
タイトル検証を設定するには:
- 上部のバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 設定 > マージリクエストを選択します。
- タイトルパターンテキストボックスに、正規表現パターンを入力します。
- タイトルの例テキストボックスに、期待されるフォーマットの説明を入力します。マージリクエストの作成者が何を使用すべきか分かるように、有効な例を含めてください。
- 変更を保存を選択します。
タイトルパターンを設定すると、タイトルの例も必須になります。マージリクエストのタイトルがパターンに一致しない場合、ユーザーにはタイトルの例が表示されます。
タイトル検証を削除するには、タイトルパターンとタイトルの例のテキストボックスを両方クリアし、変更を保存を選択します。
APIでタイトル検証を設定するには、projects APIも使用できます。
正規表現構文
タイトル検証はPCREではなくRE2構文を使用します。RE2は後方参照や先読み/後読みアサーションをサポートしていません。
パターンと説明のフィールドは、それぞれ最大255文字です。
パターンの例
以下は正規表現パターンの例です:
Jiraチケット参照(有効なタイトルの例:
PROJ-123 Fix login bug):^[A-Z]+-\d+ .+Conventionalコミット(有効なタイトルの例:
feat(auth): add SSO support):^(feat|fix|docs|chore|refactor|test|style)(\(.+\))?: .+カスタムプレフィックス(有効なタイトルの例:
BUGFIX: resolve timeout error):^(FEATURE|BUGFIX|HOTFIX): .+角括弧で囲まれたカテゴリ(有効なタイトルの例:
[Feature] Add dark mode):^\[.+\] .+
検証の適用
タイトル検証パターンが設定されている場合:
- パターンに一致しないマージリクエストのタイトルはマージできません。
- タイトルチェックは、承認、パイプラインステータス、スレッド解決などの他のチェックと並んでマージチェックとして表示されます。
- If 自動マージが有効な場合、マージリクエストはタイトルがパターンに一致するのを待ってからマージされます。
- 検証はマージ時の現在のタイトルに適用されます。作成者はマージする前の任意の時点でタイトルを更新できます。
トラブルシューティング
タイトル検証のためマージリクエストをマージできません
マージリクエストがタイトル検証によってブロックされた場合:
- マージリクエストのマージチェックセクションで、タイトル検証の失敗を確認します。
- 設定 > マージリクエスト > タイトルパターンで設定されたパターンに一致するように、マージリクエストのタイトルを更新します。
- エラーメッセージに表示されているタイトルの例を、期待されるフォーマットの参照として使用してください。
ドラフトマージリクエスト
タイトル検証は、Draft:プレフィックスを含む完全なタイトル文字列に適用されます。正規表現パターンがDraft:プレフィックスを考慮していない場合、ドラフトマージリクエストは検証に失敗する可能性があります。ドラフトおよび非ドラフトの両方のタイトルを許可するには、^(Draft: )?YOUR_PATTERNのようなパターンを使用することを検討してください。
正規表現パターンが期待どおりに一致しない
タイトル検証は、多くのオンライン正規表現テスターで使用されるPCRE構文とは異なるRE2構文を使用します。パターンを検証するには:
- RE2互換の正規表現テスターを使用します。
- 後方参照や先読みアサーションのようなサポートされていない機能を使用していないことを確認します。
- 特殊文字が正しくエスケープされていることを確認します。

