ほとんどの開発チームにとって、開発プロセスの最終ステップはプルリクエストです。たとえあなたのチームが New Relic CodeStream のフィードバックリクエストを、PR ベースのエンドオブサイクルコードレビューの前触れではなく、その代わりとして使用することを決めたとしても、CodeStream ではそのワークフローのすべてを IDE 内に維持することができます。CodeStream ペインの Pull Requests セクションでは、あなたに関連するすべてのオープンなプルリクエストがリストアップされ、カスタムクエリによってリストをコントロールすることができます。
重要
プルリクエストの作成は、GitHub, GitHub Enterprise, GitLab, GitLab Self-Managed, Bitbucket, Bitbucket Serverで利用可能です。プルリクエストのレビューは、GitHub, GitHub Enterprise, GitLab, GitLab Self-Managedでのみ利用可能です。
プルリクエストセクションでは、レビュー待ちのPR、自分に割り当てられたPR、自分が作成したPR、最新のPRで分けられています。
デフォルトでは、プルリクエストは以下のセクションに分割されて表示されます。
- Waiting on My Review: 自分がレビュアー、またはリクエストされたレビュアーになっているプルリクエストを開きます。
- Assigned to Me: 自分に割り当てられたプルリクエストを開く。
- Created by Me: 自分で作成したプルリクエストを公開します。
- Recent: ステータスに関係なく、あなたが作成した最新のプルリクエスト5件。
リスト内のプルリクエストをクリックすると、コードの編集やレビュー、さらにはマージができます。プルリクエストの行にカーソルを置くと、レポ、ブランチ、ステータスなどの詳細が表示されます。また、プルリクエストの行の最後には、お使いのコードホスティングサービスでプルリクエストを表示するオプションが表示されます。
各セクションの見出しにカーソルを合わせると、リストの更新、セクションのクエリの編集、セクションの削除などのオプションが表示されます。
最初のセクションでは、URL経由で任意のプルリクエストを読み込むことができます。任意のプルリクエストのURLを取得して貼り付けるだけで、CodeStreamの中でプルリクエストを見ることができます。
Pull Requestsセクションの見出しにカーソルを合わせると、右側にアイコンが表示されます。
オプションに含まれるもの
CodeStreamを使ったレビューの特典
CodeStreamは、いくつかの重要な点でGitHubやGitLabの経験を改善しています。GitHubやGitLabでは、変更点を一連のdiffハンクとしてしか見ることができません。CodeStreamにもそのような表示がありますが、ファイル全体の文脈の中で変更点を確認したい場合は、リストビューやツリービューを使うことができます。コメントしたいコードを選択し、 Comment ボタンをクリックするか、コンテキストメニューから Comment を選択します。コメントする際には、単一のコメントを追加することも、レビューを開始することもできます。
CodeStreamでは、変更されていないコードの行にコメントを付けることができます。チェンジセットに含まれるコードだけでなく、差分に含まれるすべてのコード行を選択することができます。これらのコメントはプルリクエストに1つのコメントとして追加され、進行中のレビューには含まれません。
プルリクエストの作成
いつでもプルリクエストを開くことができます。CodeStream ペインの上部にある + ボタン、または Pull Requests セクションのヘッダーにある + ボタンをクリックしてください。また、キーボードショートカット(ctlr+shift+/
p
, ctrl+/
p
(Macの場合), m
(GitLabユーザーの場合))を使うこともできます。CodeStreamでは、プルリクエストを開く前に変更内容を確認するために、ツリービュー、リストビュー、diffビューのオプションが用意されています。
ワンクリックで、最後のコミットメッセージ、ブランチ名、またはチケットを選択して作業を開始した場合はチケットタイトルに基づいてプルリクエストの名前を付けることができます。チケットを選択して作業を開始した場合は、チケットのタイトルをプルリクエストの名前にすることができます。また、チケットを選択している場合は、そのチケットとプルリクエストを明示的に結びつけることができます。プルリクエストを提出する前に、フォームの下に表示されているファイルをクリックして、変更内容を確認してください。
作業中の機能ブランチにリモート追跡用ブランチがない場合は、プルリクエストを作成する際にリモート追跡用ブランチを設定することができます。
プルリクエストを作成するための以下のオプションもご覧ください。
CodeStreamは、フォークで作業していることを自動的に検出し、ベースリポジトリとヘッドリポジトリの両方を設定することが可能です。
また、CodeStreamのフィードバックリクエストの中からプルリクエストを作成することができます。フィードバックリクエストが承認されると、上部にプルリクエストを開くためのオプションが表示されます。プルリクエストを作成する前に、フィードバックリクエストに含まれる変更をコミットしてプッシュしていることを確認してください。
フィードバックリクエストからプルリクエストを作成すると、CodeStreamはフィードバックリクエストの中にプルリクエストへのリンクを追加することで、2つの点を結びつけます。
プルリクエストの説明文に、誰がいつレビューを行ったかという情報とともに、フィードバックリクエストへのリンクを追加します。
GitHubのカスタムクエリ
デフォルトでは、GitHub の検索 API は GitHub 全体を対象としたグローバル検索を行います。そのため、検索結果が適切に制限されるようにするには、クエリに次のような修飾子を少なくともひとつ含める必要があります。
user:USERNAME
org:ORGNAME
レポ:USERNAME/REPOSITORY
author:USERNAME
assignee:USERNAME
mentions:USERNAME
チーム:ORGNAME/TEAMNAME
commenter:USERNAME
involves:USERNAME
review-by:USERNAME
review-requested:USERNAME
team-review-requested:TEAMNAME
プロジェクト:プロジェクトボード
GitHubの検索構文についての詳細は、こちら をご覧ください。
すべての検索は attribute=value
形式で行われ、各パラメータの間には &
が入ります。パラメータの中にスペースがある場合はそのままにして、パラメータの中に引用符を入れないようにします (例: labels=foo,help wanted
)。 @me
でユーザーIDとユーザー名を指定すれば、それ以外はGitLab上で見つけることができます。すべてのフィルタは、デフォルトではパラメータ scope=all
を持っています( 最小限の修飾子 を参照)。これを上書きするには、 scope=X
を使用します。以下に例を示します。
state=opened&author_id=@me
state=closed&assignee_username=@me&labels=help wanted
assignee_id=5&scope=created_by_me
labels=foo,help wanted&scope=created_by_me
iids[]=1,2&milestone=1.0.0&my_reaction_emoji=star&scope=assigned_to_me
project_id=23&state=opened&reviewer_id=@me
scope=assigned_to_me¬[labels]=duplicate¬[milestone]=review
属性 | タイプ | 説明 |
---|
ステート | 文字列 | すべての 問題を返す、または 開いている または 閉じているものだけを返す |
オーダーバイ | 文字列 | created_at または updated_at フィールドで並べられたリクエストを返します。デフォルトは created_at です。 |
ソート | 文字列 | asc または desc の順に並べられたリクエストを返します。デフォルトは desc です。 |
マイルストーン | 文字列 | 特定のマイルストーンに対するマージ要求を返す None は、マイルストーンがないマージ要求を返す Any は、マイルストーンが割り当てられているマージ要求を返す |
ビュー | 文字列 | simple の場合、 iid , URL, title, description, and basic state of merge request を返します。 |
labels | 文字列 | None は、ラベルのないすべてのマージ要求を一覧表示します。 Any は、少なくとも 1 つのラベルを持つすべてのマージ要求を一覧表示します。 No+Label (Deprecated) は、ラベルのないすべてのマージ要求を一覧表示します。定義済みの名前は大文字小文字を区別しません。 |
with_labels_details | boolean | true の場合、レスポンスは labels フィールドの各ラベルの詳細を返します: :name , :color , :description , :description_html , :text_color .デフォルトは false です。 |
with_merge_status_recheck | boolean | true の場合、このプロジェクションは、merge_statusフィールドの非同期再計算を要求します(保証はしません)。デフォルトは false です。 |
created_after | データタイム | 指定された時間以降に作成されたマージ要求を返します。ISO 8601形式で期待される (2019-03-15T08:00:00Z ) |
created_before | データタイム | 指定された時間以前に作成されたマージ要求を返します。ISO 8601形式で期待される (2019-03-15T08:00:00Z ) |
アップデート後 | データタイム | 指定された時間以降に更新されたマージリクエストを返します。ISO 8601形式で期待される (2019-03-15T08:00:00Z ) |
updated_before | データタイム | 指定された時間以前に更新されたマージ要求を返します。ISO 8601形式で期待される (2019-03-15T08:00:00Z ) |
スコープ | 文字列 | 与えられたスコープに対するマージ要求を返します: created_by_me , assigned_to_me or all 。デフォルトは、 created_by_me です。 |
author_id | 整数 | 与えられたユーザー id によって作成されたマージリクエストを返します。 author_username とは相互に排他的です。 scope=all または scope=assigned_to_me と組み合わせて使用します。 |
作者のユーザ名 | 文字列 | 与えられた username によって作成されたマージリクエストを返します。 author_id とは相互に排他的です。 |
assignee_id | 整数 | 指定されたユーザーに割り当てられたマージ要求を返します id . None は、割り当てられていないマージ要求を返します Any は、割り当てられたマージ要求を返します。 |
レビュアー_id | 整数 | 指定されたユーザーをレビュアーとするマージ要求を返します id . None は、レビュアーがいないマージ要求を返します Any は、任意のレビュアーがいるマージ要求を返します。 reviewer_username と相互に排他的です。 |
レビューアのユーザ名 | 文字列 | 与えられた username . None は、レビュアーがいないマージ要求を返します。 Any は、任意のレビュアーがいるマージ要求を返します。 reviewer_id とは相互に排他的です。 |
私のリアクションのための絵文字 | 文字列 | 認証されたユーザーが、与えられた 絵文字 によって反応したマージ要求を返します。 None は、反応が与えられていない問題を返します。 Any は、少なくとも 1 つの反応が与えられた問題を返します。 |
ソースブランチ | 文字列 | 指定されたソースブランチのマージ要求を返します。 |
ターゲットブランチ | 文字列 | 指定された対象ブランチのマージ要求を返します。 |
検索 | 文字列 | title and description に対するマージ要求を検索します。 |
で | 文字列 | search 属性のスコープを変更します。 title , description , またはそれらをカンマで繋いだ文字列。デフォルトは title,description です。 |
ワイプ | 文字列 | マージ要求を wip のステータスでフィルタリングします。 yes でドラフトのマージ要求のみを返し、 no でドラフト以外のマージ要求を返します。 |
ではなく | ハッシュ | 与えられたパラメータにマッチしないマージ要求を返します。Accepts: labels , milestone , author_id , author_username , assignee_id , assignee_username , reviewer_id , reviewer_username , my_reaction_emoji . hash タイプとして ではなく をフォーマットする方法については、上記の例を参照してください。 |
環境 | 文字列 | 与えられた環境にデプロイされたマージリクエストを返します。ISO 8601形式で期待される (2019-03-15T08:00:00Z ) |
deploy_before | データタイム | 与えられた日時以前にデプロイされたマージリクエストを返します。ISO 8601形式で期待される (2019-03-15T08:00:00Z ) |
展開後 | データタイム | 指定された日時以降にデプロイされたマージリクエストを返します。ISO 8601形式で期待される (2019-03-15T08:00:00Z ) |
プロジェクトID | 整数 | 指定されたプロジェクトのマージ要求を返します。 |
group_id | 整数 | 指定されたグループのマージ要求を返します。 |
state=opened&author_id=@me
state=closed&assignee_username=@me&labels=help wanted
assignee_id=5&scope=created_by_me
labels=foo,help wanted&scope=created_by_me
iids[]=1,2&milestone=1.0.0&my_reaction_emoji=star&scope=assigned_to_me
project_id=23&state=opened&assignee_id=@me
属性 | タイプ | 説明 |
---|
assignee_id | 整数 | 与えられたユーザーに割り当てられた課題を返します id . assignee_username とは相互に排他的です。 None は割り当てられていない課題を返します。 Any は割り当てられた課題を返します。 |
アサイニーのユーザ名 | 文字列配列 | 与えられた username に割り当てられた課題を返します。 assignee_id と似ていますが、 assignee_id とは相互に排他的です。GitLab CEでは、 assignee_username 配列には1つの値しか入れてはいけません。そうでない場合は、無効なパラメータエラーが返されます。 |
author_id | 整数 | 与えられたユーザーによって作成された課題を返します id . author_username とは相互に排他的です。 scope=all または scope=assigned_to_me と組み合わせて使用します。 |
作者のユーザ名 | 文字列 | 与えられた ユーザー名 によって作成された課題を返します。 author_id に類似しており、 author_id とは相互に排他的です。 |
コンフィデンシャル | boolean | 機密事項や公的な問題をフィルタリングする。 |
created_after | データタイム | 指定された時間以降に作成された課題を返します。ISO 8601形式で期待される (2019-03-15T08:00:00Z ) |
created_before | データタイム | 指定された時間以前に作成された課題を返します。ISO 8601形式で期待される (2019-03-15T08:00:00Z ) |
due_date | 文字列 | 期日がないもの、期限切れのもの、または期日が今週、今月、2週間前から来月の間にある課題を返します。Accepts: 0 (no due date), overdue , week , month , next_month_and_previous_two_weeks . |
iids[] (英語) | 整数配列 | 指定された iidを持つissueのみを返します。 |
で | 文字列 | search 属性のスコープを変更します。 title , description , またはそれらをコンマで繋いだ文字列。デフォルトは title ,description です。 |
issue_type | 文字列 | issue の指定されたタイプにフィルタリングします。 issue , incident , or test_case のいずれかです。 |
イテレーションID | 整数 | 与えられたイテレーションIDに割り当てられた課題を返します。 None イテレーションに属さない課題を返します。 Any イテレーションに属する課題を返します。 iteration_title とは相互に排他的です。 |
Iteration_title | 文字列 | 与えられたタイトルを持つイテレーションに割り当てられた課題を返します。 iteration_id と類似しており、 iteration_id とは相互に排他的です。 |
labels | 文字列 | コンマで区切られたラベル名のリスト。返されるには、課題にすべてのラベルが付いている必要があります。 None は、ラベルが付いていないすべての課題をリストアップします。 Any は、少なくとも1つのラベルが付いているすべての課題をリストアップします。定義済みの名前は大文字と小文字を区別しません。 |
マイルストーン | 文字列 | None は、マイルストーンが設定されていないすべての課題を一覧表示します。 Any は、マイルストーンが設定されているすべての課題を一覧表示します。 |
私のリアクションのための絵文字 | 文字列 | 認証されたユーザーが、与えられた 絵文字 によって反応した問題を返します。 None は、反応が与えられていない問題を返します。 Any は、少なくとも 1 つの反応が与えられた問題を返します。 |
非アーカイブス | boolean | アーカイブされていないプロジェクトからのみ課題を返します。 false の場合、レスポンスはアーカイブされたプロジェクトとアーカイブされていないプロジェクトの両方から課題を返します。デフォルトは true です。 |
ではなく | ハッシュ | 与えられたパラメータに一致しない課題を返します。Accepts: assignee_id , assignee_username , author_id , author_username , iids , iteration_id , iteration_title , labels , milestone , and weight . |
オーダーバイ | 文字列 | created_at , updated_at , priority , due_date , relative_position , label_priority , milestone_due , popularity , weight フィールドで並べられた課題を返します。デフォルトは created_at です。 |
スコープ | 文字列 | 与えられたスコープの課題を返します: created_by_me , assigned_to_me or all 。デフォルトは created_by_me です。 |
検索 | 文字列 | タイトル と ディスクリプション に対して課題を検索します。 |
ソート | 文字列 | asc または desc の順にソートされた課題を返します。デフォルトは desc です。 |
ステート | 文字列 | すべての 問題を返す、または 開いている または 閉じているものだけを返す |
アップデート後 | データタイム | 指定された時間以降に更新された課題を返します。ISO 8601形式で予想 (2019-03-15T08:00:00Z ) |
updated_before | データタイム | 指定された時間以前に更新された課題を返します。ISO 8601形式で予想 (2019-03-15T08:00:00Z ) |
重量 | 整数 | 指定された 重みのある課題を返します . None 重みが割り当てられていない課題を返します Any 重みが割り当てられている課題を返します。 |
プロジェクトID | 整数 | 指定されたプロジェクトの課題を返します。 |
group_id | 整数 | 指定されたグループの課題を返します。 |
特定のプロジェクトを検索するには、パラメータ project_id=X
を使用します。プロジェクトIDは、GitLabでプロジェクトを閲覧する際に表示されます。プロジェクトを検索する場合、デフォルトでは scope=all
を使用し、指定したプロジェクトのすべてのマージリクエストや課題を返します。 project_id
は一度に一つしかリストアップできません。
project_id=23&state=opened&assignee_id=@me
iids[]=1&project_id=473&labels=bug
特定のグループで検索するには、パラメータ group_id=X
を使用します。グループIDは、GitLabでグループを表示するときに表示されます。グループを検索する場合、デフォルトでは scope=all
を使用し、指定したグループのすべてのマージリクエストや課題を返します。 group_id
は一度に一つしかリストアップできません。
group_id=23&state=opened&assignee_id=@me
iids[]=1&group_id=473&labels=bug
デフォルトでは、カスタムフィルタは scope=all
を使い、GitLab 全体を検索します。GitLab に掲載されているすべてのマージリクエストや課題を検索しないようにするには、次の修飾子のうち少なくともひとつを使ってこの検索を絞り込む必要があります。
プルリクエストのレビュー
注意
Bitbucketでは現在、プルリクエストのレビューは利用できません。
プルリクエストがどこで作成されたかにかかわらず、CodeStreamの中で編集、レビュー、さらにはマージすることができます。GitHubやGitLabでプルリクエストを扱う方法を知っていれば、CodeStreamでも同じように扱うことができます。
プルリクエストを確認するには
- 詳細を確認してください。
- GitHubのプルリクエストの詳細(レビュアー、アサイニー、ラベルなど)を編集できます。
- GitLab マージリクエストでは、編集モード(ページ上部のドロップダウンから)またはサイドバーを使用することができます。デフォルトでは、GitLabマージリクエストには1人のレビュアーと1人のアサイニーしか追加できません。組織が複数のレビュアーとアサイニーをサポートしている場合は、CodeStream ペインの Merge Requests セクションの見出しにある歯車メニューをクリックして有効にしてください。
- 会話の内容を確認してコメントを追加したり、共同作業者を@メンションすることができます。
- 変更点を確認し、コメントを追加し、レビューを投稿することができます。