This guide provides instructions on how to submit your contribution to the Fuchsia project.
Fuchsia manages git commits and code reviews through Gerrit's web UI. When a commit is uploaded to Gerrit, it is referred to as a change.
To contribute a change to Fuchsia, the steps are:
- Prerequisites.
- Create a change in Gerrit.
- Request a code review.
- Track your code review.
- Submit your change.
1. Prerequisites
Before you begin, you need to:
Sign the Google CLA
Do the following:
- Go to the Google Developers' Contributor License Agreements page.
- Sign the agreement on behalf of Only Yourself or Your Employer.
Generate a cookie
Do the following:
- Log into Gerrit.
- Go to https://fuchsia.googlesource.com.
- At the top of the page, click Generate Password.
- Copy the generated code and run it in a terminal of your workstation.
2. Create a change in Gerrit
To create a change in Gerrit, do the following:
Go to your Fuchsia directory, for example:
cd ~/fuchsia
Create a new branch:
git checkout -b <branch_name>
Create or edit files in the new branch.
Format modified or newly added code.
fx format-code
Add the updated files:
git add <files>
Commit the updated files and write the commit message:
git commit
Upload the commit to Gerrit:
git push origin HEAD:refs/for/main
For more information on uploading changes, see the Gerrit documentation.
For more information on special options that control commit behavior, see Commit message options.
3. Request a code review
After creating a change, to request a code review, do the following:
- Go to your Fuchsia Gerrit dashboard.
- Click your change, which appears in the Outgoing reviews section.
- Click ADD REVIEWER.
Add reviewers by email address.
You can refer to the
OWNERS
file, located in the directory where you're making your change or in one of its parents to find the best reviewers for your change. For more information about Fuchsia OWNERS, see OWNERS.Click SEND.
4. Track your code review
To track the progress of your code review, use Gerrit's web UI. (For more information on using the Gerrit code review tool, see Review UI.)
After you request a code review for your change, reviewers can score your change. Reviewers can label your change with a score of -2, -1, 0, +1, or +2. (For more information on review label definitions see Gerrit Code Review - Review Labels). In order for your change to be submitted, you need a Code Review Label +2. A Code Review Label +2 score can only be applied by a directory owner.
If you need to update your change during the review process, see Update and upload a patch (or Resolve merge conflicts) in Appendices.
Resolve comments
Your reviewers will probably leave comments describing things that you need to update in your code before they can approve your change. In general, only check the Resolved checkbox next to a comment when you are sure that your reviewer will find your updates acceptable. If there is any doubt whether your reviewer will agree with your updates, leave the Resolved checkbox unchecked.
5. Submit your change
A change can be submitted after a repository owner applies the
Code Review Label +2 to your change. When a change is submitted, the change
is submitted to the Commit Queue (CQ). The Commit Queue verifies and
merges changes to the main
branch.
Only contributors with commit access can submit code directly through the Gerrit interface. Regular members need to ask a Committer to submit code for them.
Appendices
Update and upload a patch
After creating a change, to upload a patch to your change, do the following:
Create or edit files in the same branch.
Format the files that you have updated:
fx format-code
Add the updated files:
git add <updated_files>
Include the patch in the same commit using the
--amend
option:git commit --amend
Upload the patch to Gerrit:
git push origin HEAD:refs/for/main
Resolve merge conflicts
When Gerrit warns you of merge conflicts in your change, do the following:
Rebase from
origin/main
, which reveals the files that cause merge conflicts:git rebase origin/main
Edit those files to resolve the conflicts and add the updated files:
git add <files_with_resolved_conflicts>
Format the files:
fx format-code
Finish the rebase:
git rebase --continue
Commit the updated files using the
--amend
option:git commit --amend
Upload the patch to Gerrit:
git push origin HEAD:refs/for/main
Delete your local branch
After the change is submitted, you may delete your local branch:
git branch -d <branch_name>
Write a change message
When writing a change message, follow the Commit message style guide.
Manage changes that span multiple repositories
To understand how to manage changes that span different repositories (petals), see the following pages:
See Source code layout for more information on the structure of the Fuchsia repository.