贡献更改

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

Fuchsia 通过 Gerrit 的网页界面管理 Git 提交和代码审核。当提交内容上传到 Gerrit 时,系统即将其视为一次更改。

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

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

1. 前提条件

在开始之前,您需要:

签署 Google CLA

请执行以下操作:

  1. 前往 Google Developers 的贡献者许可协议页面。
  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. 添加更新后的文件:

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

    git commit
    
  6. 将提交上传到 Gerrit:

    git push origin HEAD:refs/for/main
    

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

3. 请求代码审核

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

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

    您可以参考 OWNERS 文件,该文件位于您做出更改的目录中,或者位于该文件的某个父级中,以便为您的更改找到最佳审核者。如需详细了解 Fuchsia 所有者,请参阅所有者

  5. 点击发送

4. 跟踪代码审核

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

在您针对更改申请代码审核后,审核者可以对您的更改进行评分。审核者可以使用 -2、-1、0、+1 或 +2 分数为您的更改添加标签。(如需详细了解评价标签定义,请参阅 Gerrit 代码审核 - 评价标签)。若要提交您的更改,您需要提供代码审核标签 +2。代码审核标签 +2 得分只能由目录所有者应用。

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

将评论标为已解决

审核者很可能会添加注释来说明您需要更新代码的内容,然后才会批准您的更改。一般来说,仅当您确定审核人员认为您的更新可以接受时,才能选中评论旁边的已解决复选框。如果不确定审核者是否同意您的更新,请勿选中 Resolved 复选框。

5. 提交更改

在代码库所有者为您的更改应用代码审核标签 +2 后,您可以提交更改。提交更改时,更改将提交到提交队列 (CQ)。提交队列会验证并合并对 main 分支的更改。

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

附录

创建并上传补丁

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

  1. 在同一分支中创建或修改文件。
  2. 添加更新后的文件:

    git add <updated_files>
    
  3. 使用 --amend 选项在同一提交中包含补丁:

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

    git push origin HEAD:refs/for/main
    

解决合并冲突

当 Gerrit 提醒您更改中存在合并冲突时,请执行以下操作:

  1. origin/main 进行 rebase 操作,以显示导致合并冲突的文件:

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

    git add <files_with_resolved_conflicts>
    
  3. 完成 rebase:

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

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

    git push origin HEAD:refs/for/main
    

删除本地分支

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

git branch -d <branch_name>

撰写更改消息

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

管理跨多个代码库的更改

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

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