Class PullRequestsClient

java.lang.Object
ink.icoding.github4j.GithubClient
ink.icoding.github4j.client.PullRequestsClient

public class PullRequestsClient extends GithubClient
GitHub Pull Requests API 客户端。

提供 Pull Request 的创建、更新、合并,以及 Review、Review 评论、 Review 请求、文件、提交等操作的封装方法。

对应 GitHub REST API 文档: Pull Requests

See Also:
  • Constructor Details

    • PullRequestsClient

      public PullRequestsClient(GithubClient parent)
  • Method Details

    • list

      public Page<PullRequest> list(String owner, String repo, ListPullsOptions options)
      列出指定仓库的 Pull Request。

      对应端点: GET /repos/{owner}/{repo}/pulls

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      options - 列表选项(状态、头部分支、基础分支、排序、方向等),可为 null
      Returns:
      分页的 Pull Request 列表
    • get

      public GithubResponse<PullRequest> get(String owner, String repo, int pullNumber)
      获取单个 Pull Request 的详细信息。

      对应端点: GET /repos/{owner}/{repo}/pulls/{pull_number}

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      pullNumber - Pull Request 编号
      Returns:
      Pull Request 详情
    • create

      public GithubResponse<PullRequest> create(String owner, String repo, CreatePullRequestRequest request)
      创建新的 Pull Request。

      对应端点: POST /repos/{owner}/{repo}/pulls

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      request - 创建 Pull Request 的请求体(标题、正文、头部分支、基础分支等)
      Returns:
      创建后的 Pull Request
    • update

      public GithubResponse<PullRequest> update(String owner, String repo, int pullNumber, UpdatePullRequestRequest request)
      更新指定的 Pull Request。

      对应端点: PATCH /repos/{owner}/{repo}/pulls/{pull_number}

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      pullNumber - Pull Request 编号
      request - 更新 Pull Request 的请求体(标题、正文、状态等)
      Returns:
      更新后的 Pull Request
    • listReviews

      public Page<PullRequestReview> listReviews(String owner, String repo, int pullNumber, PageOptions options)
      列出指定 Pull Request 的 Reviews。

      对应端点: GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      pullNumber - Pull Request 编号
      options - 分页选项,可为 null
      Returns:
      分页的 Review 列表
    • getReview

      public GithubResponse<PullRequestReview> getReview(String owner, String repo, int pullNumber, long reviewId)
      获取指定 Pull Request Review 的详细信息。

      对应端点: GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      pullNumber - Pull Request 编号
      reviewId - Review ID
      Returns:
      Review 详情
    • createReview

      public GithubResponse<PullRequestReview> createReview(String owner, String repo, int pullNumber, CreateReviewRequest request)
      为指定 Pull Request 创建 Review。

      对应端点: POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      pullNumber - Pull Request 编号
      request - 创建 Review 的请求体(事件、正文、评论等)
      Returns:
      创建后的 Review
    • submitReview

      public GithubResponse<PullRequestReview> submitReview(String owner, String repo, int pullNumber, long reviewId, Map<String,Object> body)
      提交指定的 Pull Request Review(触发 Review 事件)。

      对应端点: POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      pullNumber - Pull Request 编号
      reviewId - Review ID
      body - 请求体,包含事件类型(如 "APPROVE"、"REQUEST_CHANGES"、"COMMENT")
      Returns:
      提交后的 Review
    • dismissReview

      public GithubResponse<PullRequestReview> dismissReview(String owner, String repo, int pullNumber, long reviewId, Map<String,String> body)
      驳回指定的 Pull Request Review。

      对应端点: PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      pullNumber - Pull Request 编号
      reviewId - Review ID
      body - 请求体,包含驳回原因(message 字段)
      Returns:
      驳回后的 Review
    • deletePendingReview

      public void deletePendingReview(String owner, String repo, int pullNumber, long reviewId)
      删除指定的待处理 Pull Request Review(状态为 PENDING 的 Review)。

      对应端点: DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      pullNumber - Pull Request 编号
      reviewId - Review ID
    • listReviewComments

      public Page<Comment> listReviewComments(String owner, String repo, int pullNumber, ListReviewCommentsOptions options)
      列出指定 Pull Request 的 Review 评论。

      对应端点: GET /repos/{owner}/{repo}/pulls/{pull_number}/comments

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      pullNumber - Pull Request 编号
      options - 列表选项(排序、方向、时间筛选等),可为 null
      Returns:
      分页的评论列表
    • listReviewCommentsForRepo

      public Page<Comment> listReviewCommentsForRepo(String owner, String repo, ListReviewCommentsOptions options)
      列出仓库中所有 Pull Request 的 Review 评论。

      对应端点: GET /repos/{owner}/{repo}/pulls/comments

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      options - 列表选项(排序、方向、时间筛选等),可为 null
      Returns:
      分页的评论列表
    • createReviewComment

      public GithubResponse<Comment> createReviewComment(String owner, String repo, int pullNumber, Map<String,Object> body)
      为指定 Pull Request 创建 Review 评论。

      对应端点: POST /repos/{owner}/{repo}/pulls/{pull_number}/comments

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      pullNumber - Pull Request 编号
      body - 请求体(包含正文、路径、行号等信息)
      Returns:
      创建后的评论
    • updateReviewComment

      public GithubResponse<Comment> updateReviewComment(String owner, String repo, long commentId, Map<String,String> body)
      更新指定的 Pull Request Review 评论。

      对应端点: PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      commentId - 评论 ID
      body - 请求体(包含更新后的正文)
      Returns:
      更新后的评论
    • deleteReviewComment

      public void deleteReviewComment(String owner, String repo, long commentId)
      删除指定的 Pull Request Review 评论。

      对应端点: DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      commentId - 评论 ID
    • createReviewRequest

      public void createReviewRequest(String owner, String repo, int pullNumber, Map<String, List<String>> body)
      为指定 Pull Request 请求 Review。

      对应端点: POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      pullNumber - Pull Request 编号
      body - 请求体,包含 reviewers(用户名列表)和 team_reviewers(团队名称列表)
    • deleteReviewRequest

      public void deleteReviewRequest(String owner, String repo, int pullNumber, Map<String, List<String>> body)
      删除指定 Pull Request 的 Review 请求。

      对应端点: DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      pullNumber - Pull Request 编号
      body - 请求体,包含 reviewers(用户名列表)和 team_reviewers(团队名称列表)
    • listFiles

      public Page<PullRequestFile> listFiles(String owner, String repo, int pullNumber, PageOptions options)
      列出指定 Pull Request 中修改的文件。

      对应端点: GET /repos/{owner}/{repo}/pulls/{pull_number}/files

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      pullNumber - Pull Request 编号
      options - 分页选项,可为 null
      Returns:
      分页的文件列表
    • listCommits

      public Page<Commit> listCommits(String owner, String repo, int pullNumber, PageOptions options)
      列出指定 Pull Request 中的提交。

      对应端点: GET /repos/{owner}/{repo}/pulls/{pull_number}/commits

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      pullNumber - Pull Request 编号
      options - 分页选项,可为 null
      Returns:
      分页的提交列表
    • merge

      public GithubResponse<MergeResult> merge(String owner, String repo, int pullNumber, MergePullRequestRequest request)
      合并指定的 Pull Request。

      对应端点: PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      pullNumber - Pull Request 编号
      request - 合并请求体(合并方式、提交消息等)
      Returns:
      合并结果
    • isMerged

      public boolean isMerged(String owner, String repo, int pullNumber)
      检查指定 Pull Request 是否已被合并。

      对应端点: GET /repos/{owner}/{repo}/pulls/{pull_number}/merge

      如果已合并返回 true,否则返回 false

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      pullNumber - Pull Request 编号
      Returns:
      如果 Pull Request 已合并返回 true,否则返回 false
    • updateBranch

      public GithubResponse<Map<String,Object>> updateBranch(String owner, String repo, int pullNumber, Map<String,String> body)
      更新 Pull Request 的头部分支,使其与基础分支保持同步。

      对应端点: PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch

      Parameters:
      owner - 仓库所有者
      repo - 仓库名称
      pullNumber - Pull Request 编号
      body - 可选的请求体(如期望的头部分支 SHA)
      Returns:
      更新结果,包含 message 字段