Azure DevOps のプルリクのターゲットブランチ・タイトル・説明を変える
違うブランチに向けて開いたプルリクは、破棄して開き直さなくても大丈夫です。アクティブなプルリクのターゲットブランチは後から変えられ、タイトルと説明も変えられます。以下は、Web の画面での場所、Azure CLI と REST API でできること、スクリプトで引っかかりやすい2つの上限です。もとにしたのは Microsoft の pull request を作成すると Pull Requests - Update(英語)です。
ターゲットブランチを変える
プルリクの「概要」ページで、右上の「その他のアクション」を開き、「ターゲット ブランチの変更」を選びます。開いた画面で「ターゲット ブランチの選択」から新しいブランチを選び、「変更」を押します。
新しいプルリクを保存する前なら、ブランチ名の横に「ソースブランチとターゲットブランチの切り替え」のアイコンもあります。プルリクがアクティブになるとこのアイコンは消えるので、その後は「ターゲット ブランチの変更」を使います。
Azure CLI ではできません。az repos pr create には --target-branch がありますが、az repos pr update にはターゲットブランチのオプションがありません(あるのは --title、--description、--status、--draft などです)。REST API なら、新しいブランチを targetRefName で送ります。Microsoft は、PATCH で変えられる項目の1つとして「プルリクのターゲット変更の機能が有効なとき」と書いています。
PATCH https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repository}/pullrequests/21?api-version=7.1
{"targetRefName": "refs/heads/release/2.4"}
タイトルと説明を変える
Web の画面では、いまのタイトルを選んで書き換え、保存のアイコンを押します(元に戻すアイコンで取り消せます)。説明は「説明」の欄の編集アイコンから書き換えます。説明は Markdown です。
Azure DevOps Services なら、CLI で両方を変えられます(Azure DevOps Server には対応していません)。--description に渡した値は、1つずつ別の行になります。
az repos pr update --id 21 --title "Retry the upload once" --description "Retries a failed upload once." "The second failure is reported as before."
REST API なら、Services でも社内のサーバーでも、title と description を PATCH で送ります。トークンには Code (Read & write) が要ります。サーバーでは、そのサーバーが知っているいちばん新しい api-version を使います。Azure DevOps Server 2022 は 7.0、2020 は 6.0、2019 は 5.0、TFS 2018 は 4.1 です(新しすぎる版を送ったときの答え)。
PATCH .../pullrequests/21?api-version=7.1
{"title": "Retry the upload once", "description": "Retries a failed upload once.\nThe second failure is reported as before."}
スクリプトで引っかかりやすい2つの上限
説明に入るのは4,000文字までです。Microsoft の Update のページにこの数があり、長い説明を自動で書くツールは送る前に切り詰めています。たとえば Dependabot は UTF-16 で数えるので、絵文字の多くは4,000のうち2つ分になります。
一覧の API では、説明が途中で切れます。Microsoft の Get Pull Requests のページには、結果の説明は400文字までに切り詰められる、と書かれています。プルリクを一覧で読み、説明を直して送り返すスクリプトは、切れたほうの文を保存してしまい、残りの説明が消えます。先にそのプルリクを1件だけ読み(GET .../pullrequests/21)、返ってきた説明を直してください。
IntelliJ IDEA と Rider で変える
Azure DevOps Pull Requests は、Lesstep が作っている JetBrains IDE(2024.1 以降)と Android Studio のプラグインです。Azure DevOps Services と Azure DevOps Server のプルリクエストを IDE のツールウィンドウに並べます。開いているプルリクの「Edit title and description」で、タイトルと説明を1つの画面で書き換え、Web の画面と同じように保存します。画面を開く前にそのプルリクを読み直すので、400文字を超える説明も、一覧で切れた写しではなく全文を直せます。有料の機能で、30日間の無料試用があります。読むのは無料のままです。ターゲットブランチの変更はブラウザーで行ってください。
Azure DevOps は Microsoft Corporation の商標、IntelliJ IDEA と Rider は JetBrains s.r.o. の商標です。このページは Microsoft・JetBrains のいずれとも提携しておらず、承認も受けていません。
ほかに:破棄と再アクティブ化 · プルリクのテンプレート · az repos pr · マージの衝突 · English