菜单

拉取请求流程

相关源文件

本文档提供了向 Free Programming Books 仓库贡献代码的拉取请求流程的全面指南。它涵盖了提交拉取请求的步骤、运行的自动化检查以及合并您的贡献的审查流程。有关贡献指南以及何为适当内容的信息,请参阅贡献指南

1. 拉取请求流程概述

Free Programming Books 仓库采用结构化的拉取请求流程,以确保所有贡献的一致性和质量。该流程结合了自动化检查和人工审查,以在保持高标准的同时,也对新贡献者保持友好。

来源:.github/PULL_REQUEST_TEMPLATE.md .github/workflows/fpb-lint.yml .github/workflows/check-urls.yml

2. 准备您的拉取请求

在创建拉取请求之前,请确保您已完成以下事项:

  1. 阅读贡献指南
  2. 在仓库中搜索重复项
  3. 根据仓库标准正确格式化您的添加内容
  4. 包含特定资源类型所需的所有信息

当您准备提交更改时,仓库提供了一个结构化的拉取请求模板来指导您。

2.1 拉取请求模板

仓库强制使用拉取请求模板,该模板会要求您提供有关您的贡献的特定信息

## What does this PR do?
Add resource(s) | Remove resource(s) | Add info | Improve repo

## For resources
### Description

### Why is this valuable (or not)?

### How do we know it's really free?

### For book lists, is it a book? For course lists, is it a course? etc.

## Checklist:
- [ ] Read our contributing guidelines
- [ ] Search for duplicates
- [ ] Include author(s) and platform where appropriate
- [ ] Put lists in alphabetical order, correct spacing
- [ ] Add needed indications (PDF, access notes, under construction)
- [ ] Used an informative name for this pull request

该模板有助于确保提供了所有必要信息,从而使审查流程更高效。

来源:.github/PULL_REQUEST_TEMPLATE.md1-20

3. 自动化检查

当您提交拉取请求时,系统会运行多项自动化检查,以确保质量和一致性。了解这些检查有助于您排除故障并避免常见陷阱。

3.1 URL检查系统

该仓库采用自动化 URL 检查系统,用于验证您更改文件中的所有链接均可访问。

check-urls 工作流

  1. 识别您拉取请求中所有已更改的文件
  2. 对 Markdown 和 YAML 文件运行 URL 验证
  3. 生成显示损坏或重定向链接的报告
  4. 将结果添加到拉取请求以供审查

来源:.github/workflows/check-urls.yml1-133 .github/actions/awesomebot-gh-summary-action/action.yml1-106

3.2 Linting 过程

该仓库使用自定义的代码检查工具(linter)(free-programming-books-lint),它强制执行本项目特有的格式标准。

Linting 过程检查以下内容:

  • 资源的字母顺序
  • 正确的标题结构
  • 正确的间距和格式
  • 正确的链接语法
  • 其他仓库特定的格式规则

当发现 Linting 错误时,它们会作为评论发布在您的拉取请求上,并附带需要修复的具体细节。

来源:.github/workflows/fpb-lint.yml1-37 .github/workflows/comment-pr.yml1-56

3.3 冲突检测

一个专门的工作流会自动检测并标记与其它开放的拉取请求或主分支冲突的拉取请求。

如果您的拉取请求存在冲突,它将:

  1. 被标记为“冲突”
  2. 收到解释如何解决冲突的评论
  3. 在合并之前需要更新以解决冲突

来源:.github/workflows/detect-conflicting-prs.yml1-74

4. 审查流程

自动化检查完成后,维护者会手动审查您的拉取请求。此审查确保贡献符合质量标准并与仓库的宗旨保持一致。

4.1 审查标准

维护者根据以下标准评估拉取请求:

  1. 相关性 ——该资源是否适合此仓库?
  2. 质量 ——该资源对用户是否有价值?
  3. 格式 ——该贡献是否遵循仓库标准?
  4. 完整性 ——拉取请求是否包含所有必要信息?

4.2 审查结果

审查流程可能有以下几种结果:

结果描述下一步
已批准拉取请求满足所有要求拉取请求已合并到主分支
请求更改需要解决小问题进行请求的更改并更新拉取请求
已关闭拉取请求不符合仓库标准考虑反馈以用于未来的贡献

4.3 处理反馈

当维护者请求更改时:

  1. 仔细审查所有评论
  2. 在您的分支中进行请求的更改
  3. 将更新推送到您的分支(这会自动更新拉取请求)
  4. 回复评论,确认已完成更改

来源:.github/PULL_REQUEST_TEMPLATE.md21-24

5. 过期拉取请求处理

为保持仓库活跃,过期处理系统会自动管理非活跃的拉取请求。

过期拉取请求系统的关键方面:

  1. 60天内无活动的拉取请求会被标记为“过期”
  2. 会添加评论解释过期状态
  3. 如果在标记为过期后的30天内仍无活动,该拉取请求将被关闭
  4. 任何活动(评论、提交等)都会移除过期状态
  5. 草稿拉取请求、带有特定标签的拉取请求以及近期有活动的拉取请求将被豁免

来源:.github/workflows/stale.yml1-209

6. 成功提交拉取请求的最佳实践

为增加您的拉取请求快速被接受的可能性:

  1. 保持更改的专注性 ——提交更小、更专注的拉取请求,而不是大量的更改
  2. 遵循仓库结构 ——查看现有文件以了解预期格式
  3. 彻底填写模板 ——提供所有请求的信息
  4. 及时回应反馈 ——及时处理审查评论
  5. 修复所有自动化检查失败项 ——在请求审查之前确保所有检查通过
  6. 遵循字母顺序 ——资源在其所属部分内必须按字母顺序排列

书籍条目的正确格式示例

来源:books/free-programming-books-bg.md1-53 .github/PULL_REQUEST_TEMPLATE.md13-19

7. 拉取请求生命周期

下图展示了 Free Programming Books 仓库中拉取请求的完整生命周期:

此生命周期展示了拉取请求从创建到合并或关闭的整个过程。该过程包含多个反馈循环,贡献者可以在其中解决问题并继续争取批准。

来源:.github/workflows/check-urls.yml .github/workflows/fpb-lint.yml .github/workflows/stale.yml .github/PULL_REQUEST_TEMPLATE.md