本指南介绍了如何向 Fuchsia 项目提交贡献。
Fuchsia 通过 Gerrit 的网页界面管理 Git 提交和代码审核。当提交上传到 Gerrit 时,我们称之为“更改”。
如需向 Fuchsia 贡献更改,请按以下步骤操作:
- 前提条件。
- 在 Gerrit 中创建更改。
- 申请代码审核。
- 跟踪代码审核。
- 提交更改。
1. 前提条件
在开始之前,您需要满足以下条件:
签署 Google CLA
请执行以下操作:
- 前往 Google 开发者的贡献者许可协议页面。
- 代表仅您本人或您的雇主签署协议。
生成 Cookie
请执行以下操作:
- 登录 Gerrit。
- 前往 https://fuchsia.googlesource.com。
- 点击页面顶部的生成密码。
- 复制生成的代码,然后在工作站的终端中运行该代码。
2. 在 Gerrit 中创建更改
如需在 Gerrit 中创建更改,请执行以下操作:
转到您的 Fuchsia 目录,例如:
cd ~/fuchsia
创建新分支:
git checkout -b <branch_name>
在新分支中创建或修改文件。
设置修改或新添加的代码的格式。
fx format-code
添加更新后的文件:
git add <files>
提交更新后的文件并写入提交消息:
git commit
将提交内容上传到 Gerrit:
git push origin HEAD:refs/for/main
如需详细了解如何上传更改,请参阅 Gerrit 文档。
如需详细了解用于控制提交行为的特殊选项,请参阅提交消息选项。
3. 申请代码审核
创建更改后,如需请求代码审核,请执行以下操作:
- 前往您的 Fuchsia Gerrit 信息中心。
- 点击发出审核部分中显示的更改。
- 点击添加审核者。
按电子邮件地址添加审核人员。
您可以参阅位于您进行更改的目录或其父目录中的
OWNERS
文件,以找到最适合审核您所做更改的人员。如需详细了解 Fuchsia OWNERS,请参阅 OWNERS。点击发送。
4. 跟踪代码审核进度
如需跟踪代码审核的进度,请使用 Gerrit 的网页界面。(如需详细了解如何使用 Gerrit 代码审核工具,请参阅审核界面。)
您请求对更改进行代码审核后,审核员可以为您的更改评分。审核员可以为您的更改评分,分值为 -2、-1、0、+1 或 +2。(如需详细了解审核标签定义,请参阅 Gerrit 代码审核 - 审核标签)。 您需要获得 Code Review Label +2 才能提交更改。只有目录所有者才能应用代码审核标签 +2 分。
如果您需要在审核流程中更新更改,请参阅附录中的更新并上传补丁(或解决合并冲突)。
解决评论
审核者可能会在代码中留下注释来说明您需要更新的内容,然后才能批准您的更改。一般来说,只有在您确定审核员会接受您的更新后,才应勾选相应评论旁边的已解决复选框。如果您不确定审核人员是否会同意您的更新,请勿选中已解决复选框。
5. 提交更改
在代码库所有者为您的更改应用 Code Review Label +2 后,您就可以提交更改了。提交更改后,更改会被提交到提交队列 (CQ)。提交队列会验证并合并对 main
分支的更改。
只有具有提交权限的贡献者才能直接通过 Gerrit 界面提交代码。普通成员需要请求提交者为其提交代码。
附录
更新并上传补丁
创建更改后,如需将补丁上传到更改,请执行以下操作:
在同一分支中创建或修改文件。
设置更新后的文件格式:
fx format-code
添加更新后的文件:
git add <updated_files>
使用
--amend
选项在同一提交中添加补丁:git commit --amend
将补丁上传到 Gerrit:
git push origin HEAD:refs/for/main
解决合并冲突
当 Gerrit 警告您更改中有合并冲突时,请执行以下操作:
从
origin/main
重新建立基准,这会显示导致合并冲突的文件:git rebase origin/main
修改这些文件以解决冲突并添加更新的文件:
git add <files_with_resolved_conflicts>
设置文件格式:
fx format-code
完成 rebase 操作:
git rebase --continue
使用
--amend
选项提交更新后的文件:git commit --amend
将补丁上传到 Gerrit:
git push origin HEAD:refs/for/main
删除本地分支
提交更改后,您可以删除本地分支:
git branch -d <branch_name>
撰写更改消息
撰写更改消息时,请遵循提交消息样式指南。
管理跨多个代码库的更改
如需了解如何管理跨不同代码库(花瓣)的更改,请参阅以下页面:
如需详细了解 Fuchsia 代码库的结构,请参阅源代码布局。