変更の提案
レビュアーはマージリクエストの diff スレッドで Markdown 構文を使ってコードの変更を提案することができます。マージリクエスト作成者(または適切なロールを持つ他のユーザー)は、GitLab UI から提案の一部または全部を適用することができます。提案を適用すると、変更を提案したユーザーが作成したマージリクエストにコミットが追加されます。
提案の作成
- 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
- コード > マージリクエストを選択し、マージリクエストを見つけてください。
- セカンダリメニューで、変更を選択します。
- 変更したいコードの行を探します。
- 1行を選択するには
- 行番号にカーソルを合わせ、「この行にコメントを追加する」({comment})を選択します。
- 複数の行を選択するには
- 行番号にカーソルを合わせ、「この行にコメントを追加する」({comment})を選択します。
- 必要な行がすべて含まれるまで、選択してドラッグします。詳細については、複数行の提案を参照してください。
- 1行を選択するには
-
コメントツールバーで、サジェストの挿入({doc-code}) を選択します。GitLabはこのように、あらかじめ入力されたコードブロックをコメントに挿入します:
```suggestion:-0+0 The content of the line you selected is shown here. ```
- あらかじめ入力されているコードブロックを編集して、あなたの提案を追加します。
- レビューを開始する」または「レビューに追加する」を選択してレビューにコメントを追加するか、「今すぐコメントを追加する」を選択してコメントをすぐにスレッドに追加します。
複数行の提案
マージリクエストの差分をレビューする際、1つの提案で複数行(最大200行)の変更を提案することができます:
- 提案の作成で説明したように、選択してドラッグします。GitLab があなたのために提案ブロックを作成します。
- 一行を選択し、手動で範囲オフセットを調整します。
提案の最初の行にある範囲オフセットは、選択した行からの相対的な行番号を示しています。このオフセットは、サジェストで置き換える行を指定します。例えば、この提案はコメント行の上3行と下4行をカバーしています:
```suggestion:-3+4
"--talk-name=ca.desrt.dconf",
"--socket=wayland",
```
この提案を適用すると、コメント行の上3行から下4行までが置き換えられます:
複数行に対する提案は、コメントされた差分行の_上_100行と_下_100行に制限されます。これにより、1 回の提案で変更できる行数は 200 行までとなります。
リッチテキストエディタの使用
- GitLab 16.1 で
content_editor_on_issues
というフラグで導入されました。デフォルトでは無効になっています。- GitLab.comで有効になり、GitLab 16.2で自己管理。
フラグ: セルフマネジメントのGitLabでは、デフォルトでこの機能が利用可能です。この機能を隠すには、管理者がcontent_editor_on_issues
という機能フラグを無効にします。GitLab.comでは、この機能は利用可能です。
提案を挿入するとき、WYSIWYGリッチテキストエディタを使って、UIでソースファイルの行番号を上下に移動することができます。
変更された行を追加または削除するには、[From line]の横にある[+]または[-]を選択します。
提案の適用
前提条件:
- マージリクエストの作成者であるか、プロジェクトの開発者ロールを持っている必要があります。
提案された変更をマージリクエストから直接適用するには:
- 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
- コード > マージリクエストを選択し、マージリクエストを見つけてください。
- 適用したい提案を含むコメントを見つけます。
- 提案を個別に適用するには、[提案を適用] を選択します。
- 1回のコミットで複数の提案を適用するには、Add suggestion to batchを選択します。
- オプションです。変更を説明するカスタムコミットメッセージを指定します。カスタムメッセージを指定しない場合は、デフォルトのコミットメッセージが使用されます。
- 適用を選択します。
提案が適用されました:
- 提案は「適用済み」と表示されます。
- コメントスレッドは解決されました。
- GitLab は、変更内容とともに新しいコミットを作成します。
- ユーザーが Developer ロールを持っている場合、GitLab は提案された変更をマージリクエストのブランチにあるコードベースに直接プッシュします。
コードブロックのネスト
フェンスで囲まれたコードブロックを含む提案を追加するには、提案を3つのバックスティックではなく4つのバックスティックで囲みます:
````suggestion:-0+2
```shell
git config --global receive.advertisepushoptions true
```
````
適用された提案のコミットメッセージの設定
GitLabはサジェストを適用する際にデフォルトのコミットメッセージを使用します。このメッセージはプレースホルダをサポートしており、変更することもできます。例えば、2つの異なるファイルに3つの提案を適用した場合、デフォルトのメッセージApply %{suggestions_count} suggestion(s) to %{files_count} file(s)
はこのように表示されます:
Apply 3 suggestion(s) to 2 file(s)
フォークから作成されたマージリクエストは、ターゲットプロジェクトで定義されたテンプレートを使用します。
プロジェクトのニーズに合わせて、これらのメッセージをカスタマイズし、他のプレースホルダー変数を含めることができます:
- 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
- 設定 > マージリクエストを選択します。
- マージ提案までスクロールし、必要に応じてテキストを変更します。このメッセージで使用できるプレースホルダーのリストについては、サポートされる変数を参照してください。
サポートされている変数
適用済み提案のコミットメッセージテンプレートはこれらの変数をサポートしています:
変数 | 説明 | 出力例 |
---|---|---|
%{branch_name} | 提案が適用されたブランチの名前。 | my-feature-branch |
%{files_count} | 提案が適用されたファイルの数。 | 2 |
%{file_paths} | 提案が適用されたファイルのパス。パスはカンマで区切られます。 | docs/index.md, docs/about.md |
%{project_path} | プロジェクトのパス。 | my-group/my-project |
%{project_name} | プロジェクト名。 | My Project |
%{suggestions_count} | 適用された提案の数。 | 3 |
%{username} | 提案を適用したユーザーのユーザー名。 | user_1 |
%{user_full_name} | 提案を適用するユーザーのフルネーム。 | User 1 |
たとえば、コミットメッセージをカスタマイズしてAddresses user_1's review
を出力するには、カスタムテキストをAddresses %{username}'s review
に設定します。
バッチに関する提案
GitLab 14.4でバッチサジェスト用のカスタムコミットメッセージを導入しました。
ブランチに追加されるコミット数を減らすために、1回のコミットで複数の提案を適用することができます。
- 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
- コード > マージリクエストを選択し、マージリクエストを見つけてください。
- 適用したい各提案について、[バッチに提案を追加] を選択します。
- オプション。提案を削除するには、Remove from batch(バッチから削除)を選択します。
-
必要な提案を追加したら、[提案を適用]を選択します。
複数の作成者の変更を含む提案を一括して適用した場合、あなたは結果のコミットの作成者としてクレジットされます。プロジェクトがコミットを追加したユーザーからの承認を防ぐように設定されている場合、あなたはこのマージリクエストの承認者ではなくなります。 - オプションです。バッチ提案(GitLab 14.4以降)には、変更を説明するカスタムコミットメッセージを指定します。指定しない場合は、デフォルトのコミットメッセージが使用されます。