SuperAPI AI 工具集

create-pr

编程与开发

查看项目

更新于 10-15 15:14

技能介绍

用途

create-pr 用于按照 Sentry 的工程实践创建 Pull Request。当你需要打开 PR、撰写 PR 描述,或为代码评审准备改动时,可以使用该技能。它帮助你把改动整理成符合 Sentry 代码评审与提交信息规范的 PR。

前置要求

需要已安装并完成认证的 GitHub CLI(gh),且该命令可用。

主要流程

第一步:验证分支状态

使用以下命令检查当前分支与状态:

git status
git log main..HEAD --oneline

需要确保:所有改动都已提交;分支与远程保持同步;如有需要,改动已基于 main 变基。

第二步:分析改动

查看将要包含在 PR 中的内容:

# 查看将进入 PR 的所有提交
git log main..HEAD

# 查看完整 diff
git diff main...HEAD

在撰写描述之前,先理解所有改动的范围与目的。

第三步:撰写 PR 描述

遵循以下结构:

  • 简要说明该 PR 做了什么
  • 为什么进行这些改动(动机)
  • 考虑过的替代方案(如有)
  • 评审者需要的任何额外上下文

不要包含:

  • “Test plan”部分
  • 测试步骤的复选框列表
  • 对 diff 的冗余摘要

应当包含:

  • 对“做了什么”和“为什么”的清晰解释
  • 相关 issue 或工单的链接
  • 从代码中不易看出的上下文
  • 需要仔细评审的特定区域的说明

第四步:创建 PR

gh pr create --title "<type>(<scope>): <description>" --body "$(cat <<'EOF'
<description body here>
EOF
)"

标题格式遵循提交约定,例如:

  • feat(scope): Add new feature
  • fix(scope): Fix the bug
  • ref: Refactor something

第五步:添加评审者(如已知)

# 请求特定人员评审
gh pr edit --add-reviewer username1,username2

# 或请求某个团队评审
gh pr edit --add-reviewer @getsentry/team-name

评审者数量限制在 1-3 人,以保持清晰的责任归属。

PR 描述示例

功能 PR

标题:Add Slack thread replies for alert notifications

正文:当告警被更新或解决时,我们现在会在原始 Slack 线程中发布回复,而不是创建新消息。这样可以让相关通知保持分组,并减少频道噪音。此前曾考虑对原始消息进行编辑,但使用线程能更好地保留事件时间线,并且在原始消息早于 Slack 编辑窗口时仍然有效。Refs SENTRY-1234

缺陷修复 PR

标题:Handle null response in user API endpoint

正文:用户端点对于软删除账户可能返回 null,导致访问用户属性时仪表盘崩溃。此改动添加了 null 检查并返回正确的 404 响应。在调查 SENTRY-5678 时发现。Fixes SENTRY-5678

重构 PR

标题:Extract validation logic to shared module

正文:将 alerts、issues 和 projects 端点中重复的验证代码移动到共享的验证器类中。无行为变更。这是为了在 SENTRY-9999 中添加新的验证规则做准备,避免在各端点间重复逻辑。

Issue 引用

在 PR 正文中引用 issue:

语法 效果
Fixes #1234 合并时关闭 GitHub issue
Fixes SENTRY-1234 关闭 Sentry issue
Refs GH-1234 仅链接,不关闭
Refs LINEAR-ABC-123 链接 Linear issue

指导原则

  • 每个功能/修复一个 PR——不要捆绑无关改动
  • 保持 PR 可评审——更小的 PR 能获得更快、更好的评审
  • 解释“为什么”——代码展示“做了什么”,描述解释“为什么”
  • 尽早标记 WIP——使用草稿 PR 获取早期反馈

参考

  • Sentry Code Review Guidelines
  • Sentry Commit Messages