如果您是仓库维护者,您可以通过多种方式来管理和标准化贡献者在您的仓库中创建的拉取请求。这些步骤可以帮助您确保拉取请求由适当的人审阅,并符合您仓库的标准。
使用拉取请求模板
拉取请求模板可让您自定义并标准化在有人为您的仓库创建拉取请求时应包含的信息。将拉取请求模板添加到仓库后,项目贡献者将在拉取请求正文中自动看到模板内容。欲了解更多信息,请参阅 Creating a pull request template for your repository。
您可以使用拉取请求模板来标准化仓库的审查流程。例如,您可以在模板中加入任务列表,列出作者在合并其拉取请求之前需要完成的任务。欲了解更多信息,请参阅 About tasklists。
您可以要求贡献者在拉取请求正文中包含议题引用,这样在合并拉取请求时会自动关闭对应的议题。欲了解更多信息,请参阅 Linking a pull request to an issue。
定义代码所有者
您可能希望确保特定人员始终审查对仓库中某些代码或文件的更改。例如,您可能希望确保安全团队的成员始终审查对 SECURITY.md 文件或 dependabot.yml 文件的更改。
您可以将个人或团队定义为代码所有者,以承担对仓库中某些代码或文件的责任。当有人打开修改这些所有者所拥有文件的拉取请求时,代码所有者会自动收到审查请求。您可以为特定类型的文件或目录、以及仓库中的不同分支定义代码所有者。欲了解更多信息,请参阅 About code owners。
使用受保护分支
您可以使用受保护分支来阻止将拉取请求合并到重要分支(例如 main)中,除非满足特定条件。例如,您可以要求获得批准的审查,或要求所有状态检查通过。参见 About protected branches。
使用规则集
与受保护分支协同工作,规则集让您能够在整个仓库中强制执行策略,例如要求在拉取请求合并前必须通过状态检查或工作流。
规则集在与其他自动化安全检查结合时,尤其有助于维护仓库安全。例如
- 您可以使用规则集强制执行依赖审查操作,这是一种在代码库中引入有漏洞依赖时阻止拉取请求的工作流。参见 Enforcing dependency review across an organization。
- 如果您的仓库已配置代码扫描,您可以使用规则集设置代码扫描合并保护——当出现特定严重程度的代码扫描警报或代码扫描分析仍在进行中时,阻止拉取请求合并。参见 Set code scanning merge protection。
使用推送规则集
使用推送规则集,您可以基于文件扩展名、文件路径长度、文件和文件夹路径以及文件大小,阻止向私有或内部仓库及其整个派生网络的推送。
推送规则无需指定分支,因为它们适用于对仓库的每一次推送。
推送规则集允许您
-
限制文件路径:阻止包含指定文件路径更改的提交被推送。
您可以使用
fnmatch语法来实现。例如,对test/demo/**/*的限制会阻止对test/demo/目录下任何文件或文件夹的推送。对test/docs/pushrules.md的限制会专门阻止对test/docs/目录下pushrules.md文件的推送。欲了解更多信息,请参阅 Creating rulesets for a repository。 -
限制文件路径长度:阻止包含超过指定字符数的文件路径的提交被推送。
-
限制文件扩展名:阻止包含指定文件扩展名的文件的提交被推送。
-
限制文件大小:阻止超过指定文件大小限制的提交被推送。
关于分叉仓库的推送规则集
推送规则适用于仓库的整个分叉网络,确保对仓库的每个入口点均受保护。例如,如果您分叉了已启用推送规则集的仓库,则相同的推送规则集也会应用于您的分叉仓库。
对于分叉仓库,唯一拥有推送规则绕过权限的人是根仓库中拥有绕过权限的人。
欲了解更多信息,请参阅 About rulesets。
使用自动化工具审查代码风格
在仓库的拉取请求中使用自动化工具(如 linter)可保持代码风格的一致性并提升可读性。使用自动化工具捕获拼写错误或格式问题,可让审阅者有更多时间专注于拉取请求的实际内容。
例如,您可以使用 GitHub Actions 设置代码 linter,使其在持续集成(CI)工作流的一部分对拉取请求运行。欲了解更多信息,请参阅 Continuous integration。