贡献更改

本指南介绍了如何向 Fuchsia 项目提交贡献。

Fuchsia 通过 Gerrit 的网页界面管理 Git 提交和代码审核。当提交上传到 Gerrit 时,我们称之为“更改”。

如需向 Fuchsia 贡献更改,请按以下步骤操作:

  1. 前提条件
  2. 在 Gerrit 中创建更改
  3. 申请代码审核
  4. 跟踪代码审核
  5. 提交更改

1. 前提条件

在开始之前,您需要满足以下条件:

签署 Google CLA

请执行以下操作:

  1. 前往 Google 开发者的贡献者许可协议页面。
  2. 代表仅您本人您的雇主签署协议。

请执行以下操作:

  1. 登录 Gerrit
  2. 前往 https://fuchsia.googlesource.com
  3. 点击页面顶部的生成密码
  4. 复制生成的代码,然后在工作站的终端中运行该代码。

2. 在 Gerrit 中创建更改

如需在 Gerrit 中创建更改,请执行以下操作:

  1. 转到您的 Fuchsia 目录,例如:

    cd ~/fuchsia
  2. 创建新分支:

    git checkout -b <branch_name>
  3. 在新分支中创建或修改文件。

  4. 设置修改或新添加的代码的格式。

    fx format-code
  5. 添加更新后的文件:

    git add <files>
  6. 提交更新后的文件并写入提交消息

    git commit
  7. 将提交内容上传到 Gerrit:

    git push origin HEAD:refs/for/main

    如需详细了解如何上传更改,请参阅 Gerrit 文档

    如需详细了解用于控制提交行为的特殊选项,请参阅提交消息选项

3. 申请代码审核

创建更改后,如需请求代码审核,请执行以下操作:

  1. 前往您的 Fuchsia Gerrit 信息中心
  2. 点击发出审核部分中显示的更改。
  3. 点击添加审核者
  4. 按电子邮件地址添加审核人员。

    您可以参阅位于您进行更改的目录或其父目录中的 OWNERS 文件,以找到最适合审核您所做更改的人员。如需详细了解 Fuchsia OWNERS,请参阅 OWNERS

  5. 点击发送

4. 跟踪代码审核进度

如需跟踪代码审核的进度,请使用 Gerrit 的网页界面。(如需详细了解如何使用 Gerrit 代码审核工具,请参阅审核界面。)

您请求对更改进行代码审核后,审核员可以为您的更改评分。审核员可以为您的更改评分,分值为 -2、-1、0、+1 或 +2。(如需详细了解审核标签定义,请参阅 Gerrit 代码审核 - 审核标签)。 您需要获得 Code Review Label +2 才能提交更改。只有目录所有者才能应用代码审核标签 +2 分。

如果您需要在审核流程中更新更改,请参阅附录中的更新并上传补丁(或解决合并冲突)。

解决评论

审核者可能会在代码中留下注释来说明您需要更新的内容,然后才能批准您的更改。一般来说,只有在您确定审核员会接受您的更新后,才应勾选相应评论旁边的已解决复选框。如果您不确定审核人员是否会同意您的更新,请勿选中已解决复选框。

5. 提交更改

在代码库所有者为您的更改应用 Code Review Label +2 后,您就可以提交更改了。提交更改后,更改会被提交到提交队列 (CQ)。提交队列会验证并合并对 main 分支的更改。

只有具有提交权限的贡献者才能直接通过 Gerrit 界面提交代码。普通成员需要请求提交者为其提交代码。

附录

更新并上传补丁

创建更改后,如需将补丁上传到更改,请执行以下操作:

  1. 在同一分支中创建或修改文件。

  2. 设置更新后的文件格式:

    fx format-code
  3. 添加更新后的文件:

    git add <updated_files>
  4. 使用 --amend 选项在同一提交中添加补丁:

    git commit --amend
  5. 将补丁上传到 Gerrit:

    git push origin HEAD:refs/for/main

解决合并冲突

当 Gerrit 警告您更改中有合并冲突时,请执行以下操作:

  1. origin/main 重新建立基准,这会显示导致合并冲突的文件:

    git rebase origin/main
  2. 修改这些文件以解决冲突并添加更新的文件:

    git add <files_with_resolved_conflicts>
  3. 设置文件格式:

    fx format-code
  4. 完成 rebase 操作:

    git rebase --continue
  5. 使用 --amend 选项提交更新后的文件:

    git commit --amend
  6. 将补丁上传到 Gerrit:

    git push origin HEAD:refs/for/main

删除本地分支

提交更改后,您可以删除本地分支:

git branch -d <branch_name>

撰写更改消息

撰写更改消息时,请遵循提交消息样式指南

管理跨多个代码库的更改

如需了解如何管理跨不同代码库(花瓣)的更改,请参阅以下页面:

如需详细了解 Fuchsia 代码库的结构,请参阅源代码布局