gutenbergdocs/docs/contributors/repository-management.md

162 lines
11 KiB
Markdown
Raw Normal View History

2025-10-21 17:33:45 +00:00
### 设计评审
若您的拉取请求涉及设计/用户界面改动请务必添加相应标签以提醒设计团队。如需申请设计评审请在PR中添加[需要设计反馈](https://github.com/WordPress/gutenberg/labels/Needs%20Design%20Feedback)标签。若存在需要更新设计/用户界面的PR请使用[Figma库更新](https://github.com/WordPress/gutenberg/labels/Figma%20Library%20Update)标签。
需进行设计评审的变更类型指南:
- 基于既有设计的修改,需确认设计在变更后仍然有效
- 任何涉及视觉效果的改动
- 针对某个创意或探索性想法希望获得设计反馈
### 合并拉取请求
满足以下条件的拉取请求通常可被合并:
- 被认定对代码库具有重要价值
- 符合所有相关代码评审标准
- 必要时配备充分测试覆盖
- 经过所有潜在边界情况验证
- 已正确添加更新日志条目
- 经过原作者以外的成员评审
- 已[变基](/docs/contributors/code/git-workflow.md#keeping-your-branch-up-to-date)至`trunk`分支最新版本
最终合并决定由 **@wordpress/gutenberg-core** 团队作出。
GitHub上WordPress组织的所有成员均具备评审和合并拉取请求的权限。若您已完成PR评审并对代码质量有信心请批准该拉取请求并通过评论提及**@wordpress/gutenberg-core**或参与该PR的核心成员。待其确认无异议后您即可将PR合并至主干分支。
多数拉取请求将自动分配发布里程碑但请确保已合并的PR获得相应分配。此举可建立代码变更的历史沿革记录便于所有项目参与者包括非技术人员追溯信息。
### 关闭拉取请求
某些情况下无论投入多少额外精力如超出范围拉取请求可能始终无法合并。此时应在关闭PR时礼貌地与贡献者沟通说明原因这有助于促进未来的建设性参与。
请确保:
1. 感谢贡献者投入的时间与精力
2. 完整阐述关闭拉取请求的决策依据
3. 尽可能提供相关支持文档链接
参考沟通模板:
> 感谢____为本次拉取请求付出的时间。
>
> 关闭此PR的原因是____。进一步说明____。
>
> 更多详情请参阅____和____。
## 团队架构
本项目使用两个GitHub团队
- [Gutenberg核心团队](https://github.com/orgs/WordPress/teams/gutenberg-core)由积极参与项目的成员组成包括定期参加会议、参与问题分类会议、执行代码评审、开发功能与修复缺陷、执行插件及npm发布等。
- [Gutenberg团队](https://github.com/orgs/WordPress/teams/gutenberg)由至少完成2-3项重要项目贡献的成员组成。
若您符合多项重要贡献已被代码库采纳的标准并希望加入Gutenberg团队欢迎在[#core-editor Slack频道](https://make.wordpress.org/chat/)提出申请。
## 项目管理
我们使用[GitHub项目](https://github.com/WordPress/gutenberg/projects)来追踪那些当前无需立即执行,但需要保留供未来参考的事项细节。
# 代码库管理
本文档为动态更新文档,旨在阐述我们如何协作管理 Gutenberg 代码库。若您希望提出修改建议,请通过提交议题进行讨论或直接向文档发起拉取请求。
本文档涵盖以下内容:
- [议题管理](#议题)
- [标签分类](#标签)
- [里程碑设置](#里程碑)
- [议题分类流程](#议题分类流程)
- [拉取请求](#拉取请求)
- [代码审查](#代码审查)
- [设计评审](#设计评审)
- [合并拉取请求](#合并拉取请求)
- [关闭拉取请求](#关闭拉取请求)
- [如何让您的拉取请求获得审核?](/docs/contributors/code/how-to-get-your-pull-request-reviewed.md)
- [项目管理](#项目)
## 议题管理
健康的议题列表应确保议题兼具相关性与可操作性。相关性指议题需符合项目当前优先级;可操作性则要求解决方案清晰明确。
对于无关或不可操作的议题应及时关闭,以免阻碍项目进展。不妨将议题列表视作工作台:堆积的杂物越多,有效工作空间就越受限。
### 标签分类
所有议题需配置[一个或多个标签](https://github.com/WordPress/gutenberg/labels)。
工作流标签以“Needs”开头可根据需要灵活添加。理想情况下每个工作流标签应有对应跟进团队例如无障碍团队负责 `Needs Accessibility Feedback`,测试团队负责 `Needs Testing` 等)。
标有[优先级-高](https://github.com/WordPress/gutenberg/labels/%5BPriority%5D%20High)与[优先级-紧急](https://github.com/WordPress/gutenberg/labels/%5BPriority%5D%20OMGWTFBBQ)的议题需指定处理人员或纳入活跃里程碑。
求助类或操作指南类问题应首先发布于相关支持论坛。若不确定是否属于程序错误,支持团队或论坛志愿者将协助排查问题,为撰写有效的错误报告收集必要信息。
常见标签示例:
- [初试推荐](https://github.com/WordPress/gutenberg/labels/Good%20First%20Issue) - 适合新贡献者处理的议题。请通过评论申领任务,并在提交拉取请求时标注议题编号。
- [初审推荐](https://github.com/WordPress/gutenberg/labels/Good%20First%20Review) - 适合有意参与代码审查的新贡献者处理的拉取请求。
- [需无障碍反馈](https://github.com/WordPress/gutenberg/labels/Needs%20Accessibility%20Feedback) - 影响无障碍访问的变更需经专项审查(如标记语言修改)。
- [需设计反馈](https://github.com/WordPress/gutenberg/labels/Needs%20Design%20Feedback) - 涉及设计或用户体验的变更需获得设计确认。
- [[类型]程序错误](https://github.com/WordPress/gutenberg/labels/%5BType%5D%20Bug) - 现有功能存在异常。
- [[类型]功能增强](https://github.com/WordPress/gutenberg/labels/%5BType%5D%20Enhancement) - 可提升 Gutenberg 使用体验的改进方案。
- [[类型]插件兼容性](https://github.com/WordPress/gutenberg/labels/%5BType%5D%20Plugin%20Interoperability) - 记录 Gutenberg 与插件/扩展的冲突情况。需通知插件作者并提供解决方案文档。
- [[状态]需补充信息](https://github.com/WordPress/gutenberg/labels/%5BStatus%5D%20Needs%20More%20Info) - 议题需补充关键信息方可推进处理,通常需要发起者配合完善。
[查阅完整标签目录](https://github.com/WordPress/gutenberg/labels)获取所有标签说明。
### 里程碑
我们将事项归入[里程碑](https://github.com/wordpress/gutenberg/milestones)以便更好地分类。事项会被添加至以`WordPress`开头的里程碑,而拉取请求则会被添加至以`(Gutenberg)`结尾的里程碑。
以下是一些您可能会看到的里程碑:
- [WordPress X.Y](https://github.com/WordPress/gutenberg/milestone/70)为未来WordPress版本需要完成的任务。
- [X.Y (Gutenberg)](https://github.com/WordPress/gutenberg/milestone/85)针对Gutenberg插件X.Y版本的拉取请求。
- [未来](https://github.com/WordPress/gutenberg/milestone/35):这是经大家一致确认为有益但不属于其他分类的事项。
### 事项分类
为了保持事项列表的健康状态需要定期进行分类。_分类_是指审查现有事项确保它们具有相关性、可操作性并包含所有必要信息。
任何人都可以帮助分类但您需要拥有Gutenberg仓库的贡献者权限才能修改事项的标签或编辑其标题。
详情请参阅[分类贡献者指南](/docs/contributors/triage.md)。
## 拉取请求
Gutenberg针对所有代码和文档变更采用功能分支拉取请求工作流。从高层次看流程如下
1. 在本地检出一个新的功能分支。
2. 进行修改,并彻底测试。
3. 对修改满意后提交更改,并推送分支。
4. 打开您的拉取请求。
5. 如果您是拥有适当访问权限的常规贡献者,请正确标记和命名您的拉取请求(见下文)。
关于拉取请求的标记和命名,以下指南有助于更高效、有条理地编制变更日志。这些指南对常规贡献者尤为重要。但请不要因纠结于这些细节而阻碍您分享工作——出错是难免的,且易于修正!
- 处理实验性界面和功能时,应用`[Type] Experimental`标签,而非`Feature`、`Enhancement`等。
- 为技术包脚本、create-block、添加React钩子等开发新功能时应用`[Type] New API`标签,而非`Feature`、`Enhancement`等。
- 修复项目内部工具的缺陷或进行增强时,应用`[Type] Build Tooling`标签,而非`Bugs`、`Enhancement`等。
- 在拉取请求标题中,与其描述为修复问题所做的代码变更,不如提及实际修复的缺陷。例如:与其说“在组件中检查可为空对象”,不如说“修复点击复制块按钮时编辑器崩溃的问题”。
除上述流程外,还有几点需要强调:
- 重要的拉取请求应有相关事项作为前提,该事项需明确待解决的问题,并允许在实际编写代码前讨论最合适的解决方案。
- 为使代码更易于合并,每个拉取请求应仅包含一个概念性变更。保持贡献的原子性可使拉取请求讨论聚焦于单一主题,并能够逐案审批变更。
- 不同的拉取请求可处理其关联事项中的不同项目或待办事项,若事项较为复杂,无需单个拉取请求覆盖单个事项。
### 代码审查
每个拉取请求除自动测试外,还需经过人工代码审查。代码审查的目标可概括为:
- **正确性**——变更是否实现了预期功能?
- **安全性**——恶意方是否会找到利用此变更的途径?
- **可读性**——数月后您自己能否理解此变更?
- **优雅性**——变更在整体风格和架构中是否协调?
- **利他性**——此变更如何为整体做出贡献?
_作为审查者_您的反馈应聚焦于想法而非个人。力求理解、保持尊重并专注于建设性对话。
_作为贡献者_您的责任是从建议中学习并根据反馈迭代您的拉取请求如有需要。力求协作为整体做出最佳贡献。
鼓励所有愿意尝试的人参与代码审查。若您审查了拉取请求并对变更充满信心,请批准它。若您觉得它尚未完全准备好合并,请添加审查意见,说明在最终批准前需要另一组人员复核。这有助于过滤明显缺陷,并简化核心成员的审查工作。关注后续审查也有助于未来提升您的审查信心。
若您尚未准备好进行完整审查可尝试在PR中评论。关于功能或变更缘由的提问同样有益。您也可以在不进行完整审查的情况下对您理解的代码部分变更发表评论。
若您在获取审查方面遇到困难,请参阅:[如何让您的拉取请求获得审查?](/docs/contributors/code/how-to-get-your-pull-request-reviewed.md)