Skip to content

创建拉取请求指南

UTL_1138 edited this page Nov 5, 2022 · 3 revisions

为了确保项目提交历史记录具体、精练、便于检索,提高多人协作和项目管理的效率,我们希望你能遵照本文认真创建拉取请求(Pull Request)。​

注意,对不符合格式的拉取请求,FGI 成员视程度有权降低该拉取请求的处理优先级,甚至直接关闭。另外,我们也有可能更改拉取请求的内容、标题或状态。如果你对拉取请求的处理结果有异议,请在对应拉取请求通过评论的方式申请复议并说明理由。

目录

拉取请求的内容

拉取请求应当主题明确,所包含的更改应当完全符合主题,不得超出主题限制的范围。

例如,一个添加新游戏的拉取请求不得包含对网页样式表的修改。

拉取请求的涉及面应当尽可能单一。

例如,若欲同时提交新游戏和新作者,则应当分别创建拉取请求。

拉取请求的描述应当以 Co-authored-by 形式写明该拉取请求的其他有效贡献者。

拉取请求的标题

格式

拉取请求的完整格式模板:

[标识] 组件或范围: 子组件: 摘要 (引用)

拉取请求的常用格式模板:

组件或范围: 摘要 (引用)

拉取请求的标题应当依照如上模板命名,使用 git revert 撤销提交、使用 git merge --no-ff 或创建合并提交(Create a merge commit)拉取请求合并方式的除外。

Revert "ci/main: fixup indentation"
Merge branch 'next-sublists'

标识

DO NOT MERGE

为拉取请求附上此标识,即表明此拉取请求中的提交不提交到主分支,且不应被合并到主分支。或由于其他原因目前不适合合并。

例如,在预览版分支中禁用隐私政策:

[DO NOT MERGE] next: renderers/nonl10n/singles: disable privacy-policy page

组件、范围、子组件

组件、范围使用文件路径不带扩展名,本文另有说明的除外。

下面本文将列举常动组件的拉取请求(提交)标题命名示例。

游戏

由于添加游戏时的主题是游戏条目这一整体,因此可以同时添加缩略图等资源,无需分拉取请求提交。

添加游戏《形骸骑士》:

games/Kelipot: new game

更新《灵龙岛》的标签和链接:

games/Dragon_Island: update tags and links

更新《矛之酒馆》的中文本地化补丁链接:

games/Tavern_of_Spear: update link of chinese l10n patch

单独更新 The HeartBeat 的缩略图:

assets/The_HeartBeat: update thumbnail

更新 Echo 的本地化游戏数据文件(同时更改两种地区语言的文件):

games/l10n/zh: Echo: update translation for description

更新『バカ部』的本地化游戏数据文件(只更改一种地区语言的文件):

games/l10n/zh-cn: Bakabu: update translation for description

更新多个游戏数据文件:

games: update author info for 3 games from Echo Project
games: remove deprecated property sensitive_media for all entities

更新多个本地化游戏数据文件:

games/l10n/zh: add description-format for all entries

作者

由于添加作者时的主题是作者条目这一整体,因此可以同时添加头像等资源,无需分拉取请求提交。

添加作者“自我剪裁工作室”:

authors/Studio_SelfCropping: new author

单独更新“Zoharwolf”的头像:

assets/_avatar/Zoharwolf: update avatar

代码

修改代码时,当一个模块包含多个类,且只对其中一个类进行修改时,可以使用 子组件: 指定类的名字。

fgi/game: GameDescription: initial brief-description support
test/tagmgr: update unit test case
scripts/build-next: do not use uimod plugin
例外情况

对于插件代码(fgi/plugins/...),组件或范围: 中应当删除 fgi/ 前辍,其余部分照常。

plugins/steam-cdn-unite: add new akamai CDN URI prefix

对于渲染器代码(fgi/renderers/...),组件或范围: 中应当删除 fgi/ 前辍,其余部分遵守文件路径。由于 fgi/renderers/ 目录曾经是 renderers/,因此需要如此保证当前格式与历史提交格式相同。

renderers/list: initial multi-klass support

模板和样式表

templates: fixup xxx bug
templates/list: use list_item widget
templates/peafowl-private/header: fixup opengraph description escape

样式表文件虽然存放于 webroot/styles/,但 组件或范围: 中应当删除 webroot/ 前辍,其余部分照常。

styles/32_game_entry: add workarounds for Mozilla Firefox

Webroot

例外情况

对于 webroot/base/ 下的文件,组件或范围: 中应将 webroot/base/ 前辍改为 webroot/,其余部分照常。由于 webroot/base/ 目录曾经是 webroot/,因此需要如此保证当前格式与历史提交格式相同。

webroot/robots: disallow /classic-ui
webroot/scripts/searchexpr: initial @reverse and @lastmod support

service worker 文件直接使用 sw: 作为 组件或范围:

sw: proactive opaque cache avoiding

UI l10n 资源文件

修改 UI l10n 资源文件时,文件路径中不包括语言的地区分支。

uil10n/zh: add translation for ...
uil10n/zh: add translation for many keys

但若欲修改 _PRIVATE.yaml 后辍的文件,则应当指定语言变体。同时使用 PRIVATE: 作为 子组件

uil10n/zh-tw: PRIVATE: add hotfix for list-klass-platform-mobile

文档

doc/search_help: add more exampless

staging-ui 和 classic-ui

若欲修改 staging-uiclassic-ui 下的文件,则应当使用 staging-ui: 或者 classic-ui/UI包代号: 作为 组件或范围: ,同时使用其余的文件名部分作为 子组件

staging-ui: styles/32_game_entry: add workarounds for Mozilla Firefox
classic-ui/pioneer: templates/pioneer-private/header: fixup build

git 子模块

修改 git 子模块文件不得使用 子组件:

更新 FGI 自有图标仓库的图标:

icons: bump to lastest version

对于第三方维护的仓库,master 可以替换为大部分的 git 引用,可以是分支名、标签或 commmit hash,但不能是 HEAD 等。

some_thirdparty/some_submodule: bump to upstream master

全树范围

写明全树范围(treewide)的提交表示修改覆盖了整个源代码树,提交的内容通常是和具体组件不太相关的修改。

修改全树范围文件不得使用 子组件:

treewide: fixup line endings
treewide: run zhconv

摘要、引用

拉取请求的摘要必须以英文书写,开头小写。

拉取请求的引用为查找和此补丁修改内容的相关地址,以便于审查者通过这些链接找到和此修改的更多原因和其他信息。引用的具体方式详见 GitHub 官方文档 Linking a pull request to an issue

games/Deers_and_Deackards: new game (#691)
game/TianHeHui: update tags and links (#246)

拉取请求的状态

未准备好供 FGI 成员审查的拉取请求应当设置为“草稿(Draft)”状态,直到该拉取请求准备好供 FGI 成员审查。

FGI 成员处置拉取请求规范

  • FGI 成员直接向项目仓库提交更改时应当遵循本文的相关规则。
  • FGI 成员应当以“压缩与合并(Squash and merge)”的方式合并拉取请求,所有提交记录符合本文规则的拉取请求除外。
  • 执行更改拉取请求的内容、标题或状态等可能与创建人意思相背的操作时,FGI 成员应当在该拉取请求评论回复,告知创建人具体的原因。
  • 关闭非因完成而关闭的拉取请求后,FGI 成员应当在该拉取请求评论回复,告知创建人具体的原因与申请复议的权利。