マージリクエスト

マージリクエストでは、Gitブランチ上のコミットとして存在するソースコードの変更案を可視化し、共同作業を行うことができます。

Merge request view

マージリクエスト(MR)は、コードの共同作業とバージョンコントロールのプラットフォームであるGitLabの基礎となるものです。マージリクエストはその名の通り、あるブランチを別のブランチに マージ するための リクエスト です。

ユースケース

A.チームで作業するソフトウェア開発者の場合。

  1. 新しいブランチをチェックアウトし、マージリクエストを通して変更内容を提出します。
  2. チームからのフィードバックをまとめます。
  3. コード品質レポートを使用してコードを最適化する実装作業を行います。
  4. GitLab CI/CDのJUnitテストレポートを使って、変更を検証します。
  5. ライセンスコンプライアンスレポートにより、ライセンスがプロジェクトと互換性のない依存関係の使用を避けることができます。
  6. 上司に承認を依頼します
  7. マネージャー:
    1. 最終レビューをした上で、コミットをプッシュします。
    2. マージリクエストを承認します
    3. パイプラインが成功したときにマージするように設定します。
  8. GitLab CI/CDの手動操作で変更内容を本番環境にデプロイします。
  9. 変更した実装が、無事にお客様の環境へデプロイされました。

B.ウェブ開発者が、自社のWebサイトのためのWebページを書いている場合。

  1. 新しいブランチをチェックアウトし、マージリクエストで新しいページを提出します。
  2. レビュアーからのフィードバックをまとめます。
  3. 変更内容はReview Appsでプレビューされます。
  4. Webデザイナーに実装を依頼します。
  5. 上司に承認を依頼します
  6. 承認されると、マージリクエストは圧縮およびマージされ、GitLab Pagesを使用してステージングにデプロイされます
  7. 本番チームは、マージコミットをcherry picksして本番環境に反映します。

概要

マージリクエスト(通称「MR」)には、提案された変更に関する多くの情報が表示されます。MRの本文には、MRの説明、ウィジェット(CI/CDパイプラインに関する情報がある場合はそれを表示します)、そのMRに協力している人々のディスカッションスレッドが表示されます。

またMRにはナビゲーションタブがあり、そこからスレッドで行われているディスカッション、コミットのリスト、パイプラインやジョブのリスト、コードの変更点、インラインコードレビューなどを確認できます。

まずは、マージリクエストの紹介をご覧ください。

マージリクエスト上部のナビゲーションタブ

GitLab 12.6で導入されました。この機能は実験的なものです。

これまでは、マージリクエストに表示されるDiscussionCommitsPipelinesChangesを表示するナビゲーションタブは、マージリクエストウィジェットの下部に配置されていました。

これらのタブを見つけるためページを上下にスクロールしなくてもよいように、ユーザーからのフィードバックに基づいて、タブの新しい配置を試しています。現在はマージリクエストの上部に配置されており、新しいOverviewタブには、マージリクエストの説明とウィジェットが表示されます。Overeviewの隣には、PipelinesCommitChangesが表示されます。

Merge request tab positions

この変更は現在、デフォルトで有効になっているフィーチャーフラグの後ろにあることに注意してください。セルフマネージドのインスタンスでは、GitLab管理者がRailsコンソールを通じて以下のコマンドで無効にできます。

Feature.disable(:mr_tabs_position)

マージリクエストの作成

マージリクエストの作成方法を紹介します。

マージリクエストのレビューと管理

マージリクエストを確認・管理するための機能を紹介します。

マージリクエストでのテストとレポート

マージリクエストでの変更点に関する、テストやレポートのオプションについてご紹介します。

マージリクエストの承認

GitLabでマージリクエストフローを作成するには、主に2つの方法があります。

  1. 1つのリポジトリで保護されたブランチを扱う
  2. 信頼すべきプロジェクトのフォークを利用する

マージリクエストの承認についてはこちらをご覧ください。