贡献更改

本指南说明了如何将您的投稿提交至 Fuchsia 项目的定义。

Fuchsia 通过以下方式管理 Git 提交和代码审核: Gerrit 的网页界面。上传提交时 这就称为一次更改

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

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

1. 前提条件

在开始之前,您需要:

签署 Google 内容许可协议

请执行以下操作:

  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 的更多信息 OWNERS,请参阅 OWNERS

  5. 点击发送

4. 跟踪代码审核

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

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

如果您需要在审核期间更新更改,请参阅 创建并上传补丁(或 解决合并冲突)。

将评论标为已解决

审核者可能会留下评论来描述 您需要先更新代码,然后他们才能批准您所做的更改。 一般情况下,只有在出现以下情况时,才需要选中评论旁的已解决复选框 您确定审核人会认为您的更新内容是可接受的。如果 但不确定审核人员是否会同意您的更新, 请勿选中已解决复选框。

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 代码库结构的信息。