堆叠 PR
堆叠 PR 指基础分支是另一个未关闭 PR 的源分支的 PR。通过堆叠,可以把大型改动拆成一串相互依赖、便于评审的小 PR。从 Gitea Enterprise v27.3.8 开始,Gitea 会自动识别这类链条,并在链条中的每个 PR 上显示完整的堆叠。显示堆叠需要有效的许可证。
- 从
main创建分支feature-part-1,并向main发起 PR。 - 从
feature-part-1创建分支feature-part-2,发起 PR 时把feature-part-1作为基础分支。 - 后续部分以此类推,始终以上一个 PR 的源分支为基础。
第二个 PR 创建时,Gitea 会在同一仓库中查找源分支就是新基础分支的未关闭 PR。如果恰好有一个,就会把两者关联成堆叠;父 PR 尚不属于任何堆叠时会新建一个。无需任何配置。
下列情况不会自动关联:
- 父 PR 来自 Fork,因为不考虑跨 Fork 的堆叠
- 有多个未关闭 PR 使用同一个源分支,此时无法确定父 PR
- 父 PR 不是以常规分支方式创建的(例如通过 AGit 创建)
堆叠是一条链而不是一棵树:每个 PR 只有一个父 PR 和一个子 PR。
堆叠中的每个 PR 都会显示Pull request stack面板。它从顶部到底部列出堆叠中的所有 PR,显示当前 PR 的位置(例如 Stack 2 / 3),高亮当前 PR,并标记已合并或已关闭的 PR。条目还可能标为冲突(Conflicted)或已过期(Outdated)。点击条目即可打开对应的 PR。
评审与合并堆叠
Section titled “评审与合并堆叠”- 逐个评审每个 PR。堆叠 PR 的基础分支是其父 PR 的源分支,因此它的差异只包含自己的改动。
- 从堆叠底部开始合并:先合并目标真实基础分支的 PR,再合并后面的 PR。父 PR 合并且分支被删除后,请把下一个 PR 的基础分支改为目标分支。
- 堆叠面板会继续显示已合并和已关闭的成员,因此改动的历史始终可见。
Agents
Section titled “Agents”Agents 的交付计划使用同一机制:依赖前序步骤的计划步骤基于前序步骤的分支,对应的 PR 显示为堆叠(“PR 2 of 3 in stack”)。