贡献的变化

Fuchsia通过Gerrit管理提交,地址为https://fuchsia-review.googlesource.com。不是所有的项目都接受分支;请在每个项目的CONTRIBUTING.md文件获取详细信息。

提交更改


为了向Fuchsia提交一个补丁,您可能首先需要生成一个cookie来对Gerrit进行身份验证。要生成cookie,登录Gerrit并单击https://fuchsia.googlesource.com顶部的“生成密码”链接。然后,复制生成的文本并在终端中执行它。

一旦通过认证,按照以下步骤向紫红色的回购提交补丁:

#create a new branch
git checkout -b branch_name

#write some awesome stuff, commit to branch_name
#edit some_file ...
git add some_file

#if specified in the repo, follow the commit message format
git commit ...

#upload the patch to Gerrit
#jiri help upload` lists flags for various features, e.g. adding reviewers
jiri upload # Adds default topic - ${USER}-branch_name
#or
jiri upload -topic="custom_topic"
#or
git push origin HEAD:refs/for/master

#at any time, if you'd like to make changes to your patch, use --amend
git commit --amend

#once the change is landed, clean up the branch
git branch -d branch_name

有关详细信息,请参阅Gerrit文档:https://gerrit-documentation.storage.googleapis.com/Documentation/2.12.3/intro-user.html#upload-change

提交信息标签

如果向Zircon、Garnet、Peridot或Topaz提交更改,请在提交主题中包含[标记],标记受更改影响的模块、库、应用程序等。这里的风格有点不正式。查看这些示例更改,了解如何使用这些更改。

  • https://fuchsia-review.googlesource.com/c/zircon/+/112976
  • https://fuchsia-review.googlesource.com/c/garnet/+/110795
  • https://fuchsia-review.googlesource.com/c/peridot/+/113955
  • https://fuchsia-review.googlesource.com/c/topaz/+/114013

errit将使用need标签标记您的更改:如果缺少这些标签,则使用Commit-Message-has-tags。

例子:

# Ready to submit
[parent][component] Update component in Topaz.
Test: Added test X

# Needs Label: Commit-Message-has-tags
Update component in Topaz.
Test: Added test X

测试


开发人员负责对他们的代码进行高质量的自动化测试。评审人员负责回推不包含足够测试的更改。

如果一个变更需要不明显的手工测试来进行验证,那么这些测试步骤应该在变更描述中以“Test:”开头的一行中进行描述。如果指令更详细,可以将它们添加到链接的bug中。

在某些情况下,我们无法测试特定的行为更改,因为我们缺少特定的基础设施。在这种情况下,我们应该在跟踪器中有一个关于创建基础设施的问题,测试标签除了描述如何手动测试更改外,还应该提到bug号:

Test: Manually tested that [...]. Automated testing needs US-XXXX

如果更改不打算更改行为,则CL描述应该这样表示。

[非谷歌员工]签署谷歌 CLA


为了添加您的更改项,您需要在谷歌CLA上签名。

(仅限谷歌员工)发布行动


提交消息可以在Fuchsia的问题跟踪器中引用问题id;这些引用将成为Gerrit UI中的链接。也可以指定问题操作,例如在提交时自动关闭问题:

BUG-123 #done

done是最常见的问题操作,尽管任何工作流操作都可以用这种方式表示。

相关的提交在Gerrit分支中变得可见时,就会发生问题操作,除了在refs/changes/下提交被忽略的情况。通常,这意味着当提交被合并到master时将发生操作,但请注意,如果将更改上载到私有分支,也会发生操作。

**注意:**目前,Fuchsia的问题跟踪器不向外部贡献者开放。

Cross-repo变化


如果使用相同的主题,Gerrit将自动跟踪两个或多个独立repos中的更改。

使用jiri上传

在所有repos上创建具有相同名称的分支,并上载更改:

# make and commit the first change
cd examples/fortune
git checkout -b add_feature_foo
* edit foo_related_files ... *
git add foo_related_files ...
git commit ...

# make and commit the second change in another repository
cd fuchsia/build
git checkout -b add_feature_foo
* edit more_foo_related_files ... *
git add more_foo_related_files ...
git commit ...

# Upload all changes with the same branch name across repos
jiri upload -multipart # Adds default topic - ${USER}-branch_name
# or
jiri upload -multipart -topic="custom_topic"

# after the changes are reviewed, approved and submitted, clean up the local branch
cd examples/fortune
git branch -d add_feature_foo

cd fuchsia/build
git branch -d add_feature_foo

使用 Gerrit 指令

# make and commit the first change, upload it with topic 'add_feature_foo'
cd examples/fortune
git checkout -b add_feature_foo
* edit foo_related_files ... *
git add foo_related_files ...
git commit ...
git push origin HEAD:refs/for/master%topic=add_feature_foo

# make and commit the second change in another repository
cd fuchsia/build
git checkout -b add_feature_foo
* edit more_foo_related_files ... *
git add more_foo_related_files ...
git commit ...
git push origin HEAD:refs/for/master%topic=add_feature_foo

# after the changes are reviewed, approved and submitted, clean up the local branch
cd examples/fortune
git branch -d add_feature_foo

cd fuchsia/build
git branch -d add_feature_foo

多个部分的变更通过主题在Gerrit中进行跟踪,并将一起进行测试,同时可以在Gerrit中提交整个主题。主题可以通过web UI编辑。

跨存储库的更改


参见跨越存储库的更改。

解决合并冲突


# rebase from origin/master, revealing the merge conflict
git rebase origin/master

# resolve the conflicts and complete the rebase
* edit files_with_conflicts ... *
git add files_with_resolved_conflicts ...
git rebase --continue
jiri upload

# continue as usual
git commit --amend
jiri upload

你可能感兴趣的:(Fuchsia)