Azure DevOps のプルリクの「変更の提案」
Azure DevOps のプルリクエストでは、レビュー担当者が行へのコメントに、その行の書き換え案を書けます。作成者はそれをプルリクのページから取り込めます。以下は、Microsoft の Review pull requests(英語)とその画面写真からまとめたものです。
変更を提案する
- プルリクの Files タブで行にカーソルを合わせ、コメントのボタンを押します。複数の行なら、先に行を選び、その上に出るコメントのボタンを使います。
- コメント欄の下の電球のボタンを押します。
```suggestionで始まるコード ブロックが書かれ、中にはコメントした行が入ります。 - ブロックの中の行を、あるべき形に書き換えて Comment を押します。書いている間、コメントの下の Suggested change の欄に差分が出ます。
取り込まれると、ブロックの中の文が、コメントの付いた行と置き換わります。元のコード(左右に並べた差分の左側)には電球が出ません。提案が変えるのは、プルリク側のファイルです。
別のもの:Approve with suggestions(提案付きで承認)は投票で、承認したうえで任意の意見があることを伝えるだけです(投票それぞれの意味)。何も取り込みません。
提案を取り込む
- プルリクの作成者が、Suggested change の欄の Apply change を押します。変更はステージされるだけで、まだコミットされません。
- Commit all changes で、ステージした提案をまとめて、プルリクのソース ブランチにコミットします。
- その前なら Undo change でステージを外せます。
このコミットは、プルリクへの新しい push です。ターゲット ブランチのポリシーが push で投票をリセットするなら、それまでの承認は消えます(投票が完了を止めるとき)。取り込んだら、コメントに返信するか、状態を Resolved にします(コメントの状態と解決)。
使える版
Azure DevOps Services、Azure DevOps Server 2022、今の Azure DevOps Server。Microsoft の Azure DevOps Server 2020 向けのページには、提案も電球も出てきません。2020 以前では、```suggestion のブロックはただのコード ブロックです。
REST API で書いた提案
Microsoft は説明していません。行へのコメントはスレッドで、その threadContext がファイル(filePath)とプルリク側の行(rightFileStart・rightFileEnd)を持ちます。提案の文はコメントの中にしかありません。道具によって報告が分かれます。オープンソースの PR-Agent は、Azure DevOps では提案を ```diff のブロックに変えて書き、そのソースに「API で書いた ```suggestion のブロックは、誰も取り込めないただのブロックとして出る」と書いています。一方、```suggestion のブロックをそのまま書く道具もあります。Apply change が要るなら、まず試しのプルリクに1件書いて確かめてください。Azure DevOps の Copilot コードレビューも提案を書きます(Copilot コードレビュー)。
IntelliJ IDEA と Rider で見るなら
Azure DevOps Pull Requests は、Lesstep が作っている JetBrains IDE(2024.1 以降)と Android Studio のプラグインです。プルリクのコメントのスレッドを IDE に出します。行へのコメントの中の ```suggestion のブロックの上には、提案が何をするかを書きます。たとえば「変更の提案:12〜14 行目 を下の行に置き換えます。」、ブロックが空なら「消します」と書き、取り込みはプルリクのページで行うと添えます。行に付いていないコメントでは、ブロックはふつうのコードとして出ます。レビューの受信箱は無料、投票・コメント・完了は Pro(月 US$1・30日間の無料試用つき)です。画面は日本語です。
Azure DevOps は Microsoft Corporation の商標、IntelliJ IDEA と Rider は JetBrains s.r.o. の商標です。このページは Microsoft・JetBrains のいずれとも提携しておらず、承認も受けていません。
ほかに:投票 · コメントの状態と解決 · Copilot コードレビュー · English