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。
这个流程把评审意见绑定到源码行。讨论会出现在实际变更旁边,不再停留在网页评论列表里。
核心启发
-
做什么:给团队建立“提交前本地审查”习惯。
- 为什么值得做:Code Review mode 会持续显示本地编辑和最近提交的差异,适合在提交前发现多余改动。
- 怎么开始:写完一个小修复后,打开
Editor Bar → Code Review,用 stepper 逐个检查改动,再提交。
-
做什么:把每次发布对应到分支或标签,方便追查回归。
- 为什么值得做:Xcode 13 可以用 commit controls 比较 branches、tags 和最近位置,适合定位两个发布版本之间的变化。
- 怎么开始:每次 TestFlight 或 App Store 发布前切 release branch 或打 tag;出现问题后,在 Code Review mode 中选择两个发布点进行对比。
-
做什么:在 Xcode 内完成 Pull Request 初审。
- 为什么值得做:Pull Request 的改动、讨论和本地未推送修改都显示在 Changes Navigator,开发者不用离开源码环境。
- 怎么开始:从
Source Control Popover → Create Pull Request创建草稿,填写标题和描述,通过 Participants 添加 reviewers。
-
做什么:把 CI 状态作为合并前检查项。
- 为什么值得做:Xcode Cloud 状态能在 Pull Request 的 CI popover 中显示,失败时可以直接跳转到详细报告。
- 怎么开始:为项目配置 Xcode Cloud 工作流;评审通过后,在 Pull Request 中检查 CI popover,再选择 merge strategy。
-
做什么:把代码评审评论写在具体源码行上。
- 为什么值得做:Xcode 支持在编辑器中 secondary click 并插入行级评论,反馈和变更位置直接绑定。
- 怎么开始:打开同事请求你评审的 Pull Request,在 Changes Navigator 中进入文件差异,对需要改进的行插入评论,最后用 actions 批准或继续讨论。
关联 Session
- Meet Xcode Cloud — 了解 Xcode Cloud 如何为 Pull Request 提供云端构建、测试和持续集成结果。
- Explore Xcode Cloud workflows — 学习配置 Xcode Cloud 工作流,把 CI 状态接入团队开发流程。
- Customize your advanced Xcode Cloud workflows — 面向复杂团队流程,定制更细的 Xcode Cloud 执行逻辑。
- Triage TestFlight crashes in Xcode Organizer — 在 Xcode Organizer 中定位 TestFlight 崩溃,和代码审查流程形成问题修复闭环。
- Explore advanced project configuration in Xcode — 管理复杂 Xcode 项目配置,减少团队协作中的构建和设置差异。
评论
GitHub Issues · utterances