WWDC Quick Look 💓 By SwiftGGTeam
Review code and collaborate in Xcode

Review code and collaborate in Xcode

观看原视频

Highlight

Xcode 13 把代码审查、历史对比、分支切换、Pull Request、评审讨论和 Xcode Cloud 状态接入同一个开发环境,开发者可以在源码上下文里发现回归、提交修复并完成团队协作。

核心内容

一个用户在 App Store 评论里说,Fruta 的界面最近看起来不对。开发者知道问题大概在哪,但真正修复之前,先要回答两个问题:改动从什么时候开始,哪些文件受到了影响。

以前,这通常要在编辑器、Git 客户端、网页 Pull Request 和 CI 页面之间来回切换。你在 Xcode 里看代码,在别的工具里看差异,再回到网页上回复评审意见。每一次切换,都会丢掉一部分上下文。

Xcode 13 的做法,是把这些动作拉回源码旁边。Code Review mode(代码审查模式)直接在编辑器里显示本地改动和历史版本差异。Source Control Navigator(源码控制导航器)的 Changes 标签页列出项目级文件变更。工具栏显示当前分支,并能进入相关 Pull Request。

这场演讲用一个完整流程串起来:先用代码审查模式追查 UI 回归,再创建修复分支和 Pull Request,接着在 Xcode 中查看团队评论、CI 状态,最后合并自己的改动,并评审同事的 Pull Request。

从一处 UI 回归开始

问题最先出现在 Ingredients 界面。开发者在源文件里修改代码时,编辑器 gutter(边栏)会标出变更位置。点击 editor bar(编辑器栏)里的 Code Review 按钮后,Xcode 会把本地编辑和最近一次提交进行比较。

这解决了第一个痛点:写代码时不必等到提交前才检查差异。每一次编辑都能立即看到旧值和新值。

从单文件差异扩展到项目差异

一个修复通常会跨多个文件。只看当前文件,很容易漏掉另一个地方的改动。Xcode 13 在 Source Control Navigator 中加入 Changes 标签页,列出上次提交之后所有改动过的文件。

点击列表里的文件,Xcode 会自动进入代码审查模式,并显示该文件的差异。开发者可以快速在文件之间跳转,重新确认这次修复包含了哪些内容。

Pull Request 回到 Xcode

修复写完后,开发者需要让团队成员确认这段不熟悉的代码不会引入新问题。Xcode 13 集成 GitHub 和 Bitbucket Server,可以从 source control popover(源码控制弹出面板)创建 Pull Request。

Pull Request 会出现在 Changes Navigator 中,包含已推送到分支的改动、尚未提交推送的本地改动、评审讨论、审批状态和 CI 状态。评论可以直接跳到对应源码位置。

详细内容

1. Code Review mode:在编辑器里看本地改动

01:26)Xcode 13 的 Code Review mode 可以把本地编辑和最近一次提交进行比较。入口是 editor bar 上的 Code Review 按钮。开启后,编辑器会持续高亮当前文件里的改动。

Editor Bar → Code Review
Source Editor → Gutter change markers
Bottom Bar → Stepper arrows
Editor Menu → In-line / Side-by-side

关键点:

  • Editor Bar → Code Review:点击编辑器栏里的 Code Review 按钮,进入代码审查模式。
  • Source Editor → Gutter change markers:编辑器边栏会标出当前文件中发生变化的位置。
  • Bottom Bar → Stepper arrows:底部栏的 stepper 显示改动数量,并用箭头在改动之间跳转。
  • Editor Menu → In-line / Side-by-side:右上角 Editor 菜单可以切换行内显示和左右对比显示。

这个功能适合写修复时使用。你不需要先提交,也不需要打开外部 diff 工具。每写一段代码,就能确认它相对上次提交改变了什么。

2. Commit selectors:比较任意两个历史点

02:33)本地改动只能解释“我刚刚改了什么”。要定位回归来源,还要比较两个历史版本。Xcode 13 在底部栏加入 commit controls(提交选择控件),可以从 branches(分支)、tags(标签)和最近位置中选择提交。

Bottom Bar → Commit controls
Select left revision → Release branch or tag
Select right revision → Another branch, tag, or recent location
Review highlights → Purple / Orange
Bottom Bar → Reset

关键点:

  • Bottom Bar → Commit controls:使用底部栏的提交控件设置对比范围。
  • Select left revision:选择一个历史版本,例如某次 TestFlight 或 App Store 发布对应的 release branch。
  • Select right revision:选择另一个历史版本,用来查看两个时间点之间的代码变化。
  • Review highlights → Purple / Orange:Xcode 用紫色和橙色区分当前对比的两个提交。
  • Bottom Bar → Reset:查看完历史差异后,点击 Reset 回到最新本地改动。

演讲中的场景是发布分支。团队每次提交 TestFlight 或 App Store 时切一个 release branch。出现 UI 问题后,可以直接比较两个发布相关版本,找到显示 ingredients 时发生过哪些变化。

3. Changes Navigator:查看整个项目的改动清单

03:47)当修复跨多个文件时,Xcode 13 的 Source Control Navigator 增加 Changes 标签页。它列出上次提交之后项目中所有修改过的文件。

Source Control Navigator → Changes
Changed file → Open in Code Review mode
File list → Move between changed files
Pull Request section → Preview included changes
Local Changes section → See changes not yet pushed

关键点:

  • Source Control Navigator → Changes:打开源码控制导航器里的 Changes 标签页,查看项目级变更列表。
  • Changed file → Open in Code Review mode:点击某个文件后,Xcode 自动进入代码审查模式并显示该文件差异。
  • File list → Move between changed files:在文件列表中切换,快速回顾这次修复涉及的所有文件。
  • Pull Request section → Preview included changes:创建 Pull Request 后,这里显示已经提交并推送到分支的内容。
  • Local Changes section → See changes not yet pushed:这里显示尚未进入 Pull Request 的本地改动。

这个清单解决的是遗漏问题。提交前,开发者可以逐个文件确认,哪些修改会进入 Pull Request,哪些修改还停留在本地。

4. Branch popover:从工具栏创建和切换分支

04:16)Xcode 13 的工具栏会显示当前分支。点击分支名,可以在最近使用过的分支之间切换,也可以通过 secondary menu(次级菜单)创建新分支。

Toolbar → Current branch name
Branch popover → Recent branches
Secondary menu → Create branch
Switch branch → Xcode discovers associated pull requests

关键点:

  • Toolbar → Current branch name:工具栏直接显示当前所在分支,减少在错误分支上继续工作的风险。
  • Branch popover → Recent branches:点击分支名后,可以快速切换最近处理过的分支。
  • Secondary menu → Create branch:通过次级菜单为修复创建新分支。
  • Switch branch → Xcode discovers associated pull requests:切换分支后,Xcode 会根据 source branch 和当前分支自动发现相关 Pull Request。

这对日常修复很重要。开发者先在本地定位问题,再创建修复分支,随后把分支和 Pull Request 连接起来。

5. Pull Request workflow:创建、评审、查看 CI、合并

05:12)Xcode 13 对 GitHub 和 Bitbucket Server 提供集成 Pull Request 支持。开发者可以从 source control popover 创建 Pull Request。Xcode 会先创建 draft pull request,把当前分支合并到默认 upstream branch,演讲中的目标分支是 main

Source Control Popover → Create Pull Request
Draft Pull Request → Target default upstream branch
Title + Description → Explain the fix
Participants → Add reviewers
Changes Navigator → Pull Request overview
Pull Request actions → Merge

关键点:

  • Source Control Popover → Create Pull Request:从源码控制弹出面板创建 Pull Request。
  • Draft Pull Request → Target default upstream branch:Xcode 先创建草稿 Pull Request,并默认合并到 upstream 默认分支。
  • Title + Description → Explain the fix:发布前填写标题和描述,让评审者理解修复内容。
  • Participants → Add reviewers:点击 Participants 按钮,把指定同事标记为 reviewers。
  • Changes Navigator → Pull Request overview:Pull Request 发布后,可以在 Changes Navigator 中查看概览、状态和讨论。
  • Pull Request actions → Merge:评审和 CI 通过后,通过 Pull Request actions 选择 Merge。

07:48)如果项目使用 Xcode Cloud,Pull Request 的 CI popover 会显示持续集成工作流状态。开发者可以看到测试结果摘要,点击条目后跳转到详细的 Xcode Cloud report。

Pull Request → CI popover
Workflow status → Test result summary
CI entry → Xcode Cloud report
Merge strategy → Merge Commit
Optional commit message → Keep or edit

关键点:

  • Pull Request → CI popover:在 Pull Request 中查看 Xcode Cloud 持续集成状态。
  • Workflow status → Test result summary:快速确认测试是否通过。
  • CI entry → Xcode Cloud report:点击某个 CI 条目,进入更详细的 Xcode Cloud 报告。
  • Merge strategy → Merge Commit:合并时选择合并策略,演讲中使用默认的 Merge Commit。
  • Optional commit message → Keep or edit:合并前可以填写可选提交信息,也可以保留默认内容。

6. Review teammate pull requests:在源码行上留下评论

08:58)source control popover 会显示和你相关的 Pull Request。它包含你创建的 Pull Request,也包含团队成员请求你评审的 Pull Request。

Source Control Popover → Relevant pull requests
Pull Request node → Overview / Review status / Discussions
Changes Navigator → Files under pull request
Editor → Secondary click → Insert comment on line
Actions → Approve

关键点:

  • Source Control Popover → Relevant pull requests:查看与自己相关的 Pull Request。
  • Pull Request node → Overview / Review status / Discussions:查看同事 Pull Request 的概览、评审状态和讨论。
  • Changes Navigator → Files under pull request:在 Pull Request 节点下逐个查看文件差异。
  • Editor → Secondary click → Insert comment on line:在编辑器里对具体源码行右键,插入评论。
  • Actions → Approve:确认改动后,通过右上角 actions 审批 Pull Request。

这个流程把评审意见绑定到源码行。讨论会出现在实际变更旁边,不再停留在网页评论列表里。

核心启发

  1. 做什么:给团队建立“提交前本地审查”习惯。

    • 为什么值得做:Code Review mode 会持续显示本地编辑和最近提交的差异,适合在提交前发现多余改动。
    • 怎么开始:写完一个小修复后,打开 Editor Bar → Code Review,用 stepper 逐个检查改动,再提交。
  2. 做什么:把每次发布对应到分支或标签,方便追查回归。

    • 为什么值得做:Xcode 13 可以用 commit controls 比较 branches、tags 和最近位置,适合定位两个发布版本之间的变化。
    • 怎么开始:每次 TestFlight 或 App Store 发布前切 release branch 或打 tag;出现问题后,在 Code Review mode 中选择两个发布点进行对比。
  3. 做什么:在 Xcode 内完成 Pull Request 初审。

    • 为什么值得做:Pull Request 的改动、讨论和本地未推送修改都显示在 Changes Navigator,开发者不用离开源码环境。
    • 怎么开始:从 Source Control Popover → Create Pull Request 创建草稿,填写标题和描述,通过 Participants 添加 reviewers。
  4. 做什么:把 CI 状态作为合并前检查项。

    • 为什么值得做:Xcode Cloud 状态能在 Pull Request 的 CI popover 中显示,失败时可以直接跳转到详细报告。
    • 怎么开始:为项目配置 Xcode Cloud 工作流;评审通过后,在 Pull Request 中检查 CI popover,再选择 merge strategy。
  5. 做什么:把代码评审评论写在具体源码行上。

    • 为什么值得做:Xcode 支持在编辑器中 secondary click 并插入行级评论,反馈和变更位置直接绑定。
    • 怎么开始:打开同事请求你评审的 Pull Request,在 Changes Navigator 中进入文件差异,对需要改进的行插入评论,最后用 actions 批准或继续讨论。

关联 Session

评论

GitHub Issues · utterances