<!--{
	"Title": "Contribution Guide"
}-->

<p>
The Go project welcomes all contributors.
</p>

<p>
This document is a guide to help you through the process
of contributing to the Go project, which is a little different
from that used by other open source projects.
We assume you have a basic understanding of Git and Go.
</p>

<p>
In addition to the information here, the Go community maintains a
<a href="https://golang.org/wiki/CodeReview">CodeReview</a> wiki page.
Feel free to contribute to the wiki as you learn the review process.
</p>

<p>
Note that the <code>gccgo</code> front end lives elsewhere;
see <a href="gccgo_contribute.html">Contributing to gccgo</a>.
</p>

<h2 id="contributor">Becoming a contributor</h2>

<h3>Overview</h3>

<p>
The first step is registering as a Go contributor and configuring your environment.
Here is a checklist of the required steps to follow:
</p>

<ul>
<li>
<b>Step 0</b>: Decide on a single Google Account you will be using to contribute to Go.
Use that account for all the following steps and make sure that <code>git</code>
is configured to create commits with that account's e-mail address.
</li>
<li>
<b>Step 1</b>: <a href="https://cla.developers.google.com/clas">Sign and submit</a> a
CLA (Contributor License Agreement).
</li>
<li>
<b>Step 2</b>: Configure authentication credentials for the Go Git repository.
Visit <a href="https://go.googlesource.com/">go.googlesource.com</a>, click
on "Generate Password" (top right), and follow the instructions.
</li>
<li>
<b>Step 3</b>: Register for Gerrit, the code review tool used by the Go team,
by <a href="https://go-review.googlesource.com/login/">visiting this page</a>.
The CLA and the registration need to be done only once for your account.
</li>
<li>
<b>Step 4</b>: Install <code>git-codereview</code> by running
<code>go get -u golang.org/x/review/git-codereview</code>
</li>
</ul>

<p>
If you prefer, there is an automated tool that walks through these steps.
Just run:
</p>

<pre>
$ go get -u golang.org/x/tools/cmd/go-contrib-init
$ cd /code/to/edit
$ go-contrib-init
</pre>

<p>
The rest of this chapter elaborates on these instructions.
If you have completed the steps above (either manually or through the tool), jump to
<a href="#before_contributing">Before contributing code</a>.
</p>

<h3 id="google_account">Step 0: Select a Google Account</h3>

<p>
A contribution to Go is made through a Google account with a specific
e-mail address.
Make sure to use the same account throughout the process and
for all your subsequent contributions.
You may need to decide whether to use a personal address or a corporate address.
The choice will depend on who
will own the copyright for the code that you will be writing
and submitting.
You might want to discuss this topic with your employer before deciding which
account to use.
</p>

<p>
Google accounts can either be Gmail e-mail accounts, G Suite organization accounts, or
accounts associated with an external e-mail address.
For instance, if you need to use
an existing corporate e-mail that is not managed through G Suite, you can create
an account associated
<a href="https://accounts.google.com/SignUpWithoutGmail">with your existing
e-mail address</a>.
</p>

<p>
You also need to make sure that your Git tool is configured to create commits
using your chosen e-mail address.
You can either configure Git globally
(as a default for all projects), or locally (for a single specific project).
You can check the current configuration with this command:
</p>

<pre>
$ git config --global user.email  # check current global config
$ git config user.email           # check current local config
</pre>

<p>
To change the configured address:
</p>

<pre>
$ git config --global user.email name@example.com   # change global config
$ git config user.email name@example.com            # change local config
</pre>


<h3 id="cla">Step 1: Contributor License Agreement</h3>

<p>
Before sending your first change to the Go project
you must have completed one of the following two CLAs.
Which CLA you should sign depends on who owns the copyright to your work.
</p>

<ul>
<li>
If you are the copyright holder, you will need to agree to the
<a href="https://developers.google.com/open-source/cla/individual">individual
contributor license agreement</a>, which can be completed online.
</li>
<li>
If your organization is the copyright holder, the organization
will need to agree to the
<a href="https://developers.google.com/open-source/cla/corporate">corporate
contributor license agreement</a>.<br>
</li>
</ul>

<p>
You can check your currently signed agreements and sign new ones at
the <a href="https://cla.developers.google.com/clas?pli=1&amp;authuser=1">Google Developers
Contributor License Agreements</a> website.
If the copyright holder for your contribution has already completed the
agreement in connection with another Google open source project,
it does not need to be completed again.
</p>

<p>
If the copyright holder for the code you are submitting changes&mdash;for example,
if you start contributing code on behalf of a new company&mdash;please send mail
to the <a href="mailto:golang-dev@googlegroups.com"><code>golang-dev</code>
mailing list</a>.
This will let us know the situation so we can make sure an appropriate agreement is
completed and update the <code>AUTHORS</code> file.
</p>


<h3 id="config_git_auth">Step 2: Configure git authentication</h3>

<p>
The main Go repository is located at
<a href="https://go.googlesource.com">go.googlesource.com</a>,
a Git server hosted by Google.
Authentication on the web server is made through your Google account, but
you also need to configure <code>git</code> on your computer to access it.
Follow this steps:
</p>

<ol>
<li>
Visit <a href="https://go.googlesource.com">go.googlesource.com</a>
and click on "Generate Password" in the page's top right menu bar.
You will be redirected to accounts.google.com to sign in.
</li>
<li>
After signing in, you will be taken to a page with the title "Configure Git".
This page contains a personalized script that when run locally will configure Git
to hold your unique authentication key.
This key is paired with one that is generated and stored on the server,
analogous to how SSH keys work.
</li>
<li>
Copy and run this script locally in your terminal to store your secret
authentication token in a <code>.gitcookies</code> file.
If you are using a Windows computer and running <code>cmd</code>,
you should instead follow the instructions in the yellow box to run the command;
otherwise run the regular script.
</li>
</ol>

<h3 id="auth">Step 3: Create a Gerrit account </h3>

<p>
Gerrit is an open-source tool used by Go maintainers to discuss and review
code submissions.
</p>

<p>
To register your account, visit <a href="https://go-review.googlesource.com/login/">
go-review.googlesource.com/login/</a> and sign in once using the same Google Account you used above.
</p>

<h3 id="git-codereview_install">Step 4: Install the git-codereview command</h3>

<p>
Changes to Go must be reviewed before they are accepted, no matter who makes the change.
A custom <code>git</code> command called <code>git-codereview</code>
simplifies sending changes to Gerrit.
</p>

<p>
Install the <code>git-codereview</code> command by running,
</p>

<pre>
$ go get -u golang.org/x/review/git-codereview
</pre>

<p>
Make sure <code>git-codereview</code> is installed in your shell path, so that the
<code>git</code> command can find it.
Check that
</p>

<pre>
$ git codereview help
</pre>

<p>
prints help text, not an error.
</p>

<p>
On Windows, when using git-bash you must make sure that
<code>git-codereview.exe</code> is in your <code>git</code> exec-path.
Run <code>git --exec-path</code> to discover the right location then create a
symbolic link or just copy the executable from $GOPATH/bin to this directory.
</p>


<h2 id="before_contributing">Before contributing code</h2>

<p>
The project welcomes code patches, but to make sure things are well
coordinated you should discuss any significant change before starting
the work.
It's recommended that you signal your intention to contribute in the
issue tracker, either by <a href="https://golang.org/issue/new">filing
a new issue</a> or by claiming
an <a href="https://golang.org/issues">existing one</a>.
</p>

<h3>Check the issue tracker</h3>

<p>
Whether you already know what contribution to make, or you are searching for
an idea, the <a href="https://github.com/golang/go/issues">issue tracker</a> is
always the first place to go.
Issues are triaged to categorize them and manage the workflow.
</p>

<p>
Most issues will be marked with one of the following workflow labels:
</p>

<ul>
	<li>
	<b>NeedsInvestigation</b>: The issue is not fully understood
	and requires analysis to understand the root cause.
	</li>
	<li>
	<b>NeedsDecision</b>: the issue is relatively well understood, but the
	Go team hasn't yet decided the best way to address it.
	It would be better to wait for a decision before writing code.
	If you are interested on working on an issue in this state,
	feel free to "ping" maintainers in the issue's comments
	if some time has passed without a decision.
	</li>
	<li>
	<b>NeedsFix</b>: the issue is fully understood and code can be written
	to fix it.
	</li>
</ul>

<p>
You can use GitHub's search functionality to find issues to help out with. Examples:
</p>

<ul>
	<li>
	Issues that need investigation: <a href="https://github.com/golang/go/issues?q=is%3Aissue+is%3Aopen+label%3ANeedsInvestigation"><code>is:issue is:open label:NeedsInvestigation</code></a>
	</li>
	<li>
	Issues that need a fix: <a href="https://github.com/golang/go/issues?q=is%3Aissue+is%3Aopen+label%3ANeedsFix"><code>is:issue is:open label:NeedsFix</code></a>
	</li>
	<li>
	Issues that need a fix and have a CL: <a href="https://github.com/golang/go/issues?q=is%3Aissue+is%3Aopen+label%3ANeedsFix+%22golang.org%2Fcl%22"><code>is:issue is:open label:NeedsFix "golang.org/cl"</code></a>
	</li>
	<li>
	Issues that need a fix and do not have a CL: <a href="https://github.com/golang/go/issues?q=is%3Aissue+is%3Aopen+label%3ANeedsFix+NOT+%22golang.org%2Fcl%22"><code>is:issue is:open label:NeedsFix NOT "golang.org/cl"</code></a>
	</li>
</ul>

<h3 id="design">Open an issue for any new problem</h3>

<p>
Excluding very trivial changes, all contributions should be connected
to an existing issue.
Feel free to open one and discuss your plans.
This process gives everyone a chance to validate the design,
helps prevent duplication of effort,
and ensures that the idea fits inside the goals for the language and tools.
It also checks that the design is sound before code is written;
the code review tool is not the place for high-level discussions.
</p>

<p>
When planning work, please note that the Go project follows a <a
href="https://golang.org/wiki/Go-Release-Cycle">six-month development cycle</a>.
The latter half of each cycle is a three-month feature freeze during
which only bug fixes and documentation updates are accepted.
New contributions can be sent during a feature freeze, but they will
not be merged until the freeze is over.
</p>

<p>
Significant changes to the language, libraries, or tools must go
through the
<a href="https://golang.org/s/proposal-process">change proposal process</a>
before they can be accepted.
</p>

<p>
Sensitive security-related issues (only!) should be reported to <a href="mailto:security@golang.org">security@golang.org</a>.
</p>

<h2 id="sending_a_change_github">Sending a change via GitHub</h2>

<p>
First-time contributors that are already familiar with the
<a href="https://guides.github.com/introduction/flow/">GitHub flow</a>
are encouraged to use the same process for Go contributions.
Even though Go
maintainers use Gerrit for code review, a bot called Gopherbot has been created to sync
GitHub pull requests to Gerrit.
</p>

<p>
Open a pull request as you normally would.
Gopherbot will create a corresponding Gerrit change and post a link to
it on your GitHub pull request; updates to the pull request will also
get reflected in the Gerrit change.
When somebody comments on the change, their comment will be also
posted in your pull request, so you will get a notification.
</p>

<p>
Some things to keep in mind:
</p>

<ul>
<li>
To update the pull request with new code, just push it to the branch; you can either
add more commits, or rebase and force-push (both styles are accepted).
</li>
<li>
If the request is accepted, all commits will be squashed, and the final
commit description will be composed by concatenating the pull request's
title and description.
The individual commits' descriptions will be discarded.
See <a href="#commit_messages">Writing good commit messages</a> for some
suggestions.
</li>
<li>
Gopherbot is unable to sync line-by-line codereview into GitHub: only the
contents of the overall comment on the request will be synced.
Remember you can always visit Gerrit to see the fine-grained review.
</li>
</ul>

<h2 id="sending_a_change_gerrit">Sending a change via Gerrit</h2>

<p>
It is not possible to fully sync Gerrit and GitHub, at least at the moment,
so we recommend learning Gerrit.
It's different but powerful and familiarity
with help you understand the flow.
</p>

<h3>Overview</h3>

<p>
This is an overview of the overall process:
</p>

<ul>
<li>
<b>Step 1:</b> Clone the Go source code from go.googlesource.com
and make sure it's stable by compiling and testing it once:
<pre>
$ git clone https://go.googlesource.com/go
$ cd go/src
$ ./all.bash                                # compile and test
</pre>
</li>

<li>
<b>Step 2:</b> Prepare changes in a new branch, created from the master branch.
To commit the changes, use <code>git</code> <code>codereview</code> <code>change</code>; that
will create or amend a single commit in the branch.
<pre>
$ git checkout -b mybranch
$ [edit files...]
$ git add [files...]
$ git codereview change   # create commit in the branch
$ [edit again...]
$ git add [files...]
$ git codereview change   # amend the existing commit with new changes
$ [etc.]
</pre>
</li>

<li>
<b>Step 3:</b> Test your changes, re-running <code>all.bash</code>.
<pre>
$ ./all.bash    # recompile and test
</pre>
</li>

<li>
<b>Step 4:</b> Send the changes for review to Gerrit using <code>git</code>
<code>codereview</code> <code>mail</code> (which doesn't use e-mail, despite the name).
<pre>
$ git codereview mail     # send changes to Gerrit
</pre>
</li>

<li>
<b>Step 5:</b> After a review, apply changes to the same single commit
and mail them to Gerrit again:
<pre>
$ [edit files...]
$ git add [files...]
$ git codereview change   # update same commit
$ git codereview mail     # send to Gerrit again
</pre>
</li>
</ul>

<p>
The rest of this section describes these steps in more detail.
</p>


<h3 id="checkout_go">Step 1: Clone the Go source code</h3>

<p>
In addition to a recent Go installation, you need to have a local copy of the source
checked out from the correct repository.
You can check out the Go source repo onto your local file system anywhere
you want as long as it's outside your <code>GOPATH</code>.
Either clone from
<code>go.googlesource.com</code> or from GitHub:
</p>

<pre>
$ git clone https://github.com/golang/go   # or https://go.googlesource.com/go
$ cd go
</pre>

<h3 id="make_branch">Step 2: Prepare changes in a new branch</h3>

<p>
Each Go change must be made in a separate branch, created from the master branch.
You can use
the normal <code>git</code> commands to create a branch and add changes to the
staging area:
</p>

<pre>
$ git checkout -b mybranch
$ [edit files...]
$ git add [files...]
</pre>

<p>
To commit changes, instead of <code>git commit</code>, use <code>git codereview change</code>.
</p>

<pre>
$ git codereview change
(open $EDITOR)
</pre>

<p>
You can edit the commit description in your favorite editor as usual.
The  <code>git</code> <code>codereview</code> <code>change</code> command
will automatically add a unique Change-Id line near the bottom.
That line is used by Gerrit to match successive uploads of the same change.
Do not edit or delete it.
A Change-Id looks like this:
</p>

<pre>
Change-Id: I2fbdbffb3aab626c4b6f56348861b7909e3e8990
</pre>

<p>
The tool also checks that you've
run <code>go</code> <code>fmt</code> over the source code, and that
the commit message follows the <a href="#commit_messages">suggested format</a>.
</p>

<p>
If you need to edit the files again, you can stage the new changes and
re-run <code>git</code> <code>codereview</code> <code>change</code>: each subsequent
run will amend the existing commit while preserving the Change-Id.
</p>

<p>
Make sure that you always keep a single commit in each branch.
If you add more
commits by mistake, you can use <code>git</code> <code>rebase</code> to
<a href="https://stackoverflow.com/questions/31668794/squash-all-your-commits-in-one-before-a-pull-request-in-github">squash them together</a>
into a single one.
</p>


<h3 id="testing">Step 3: Test your changes</h3>

<p>
You've <a href="code.html">written and tested your code</a>, but
before sending code out for review, run <i>all the tests for the whole
tree</i> to make sure the changes don't break other packages or programs:
</p>

<pre>
$ cd go/src
$ ./all.bash
</pre>

<p>
(To build under Windows use <code>all.bat</code>; this also requires
setting the environment variable <code>GOROOT_BOOTSTRAP</code> to the
directory holding the Go tree for the bootstrap compiler.)
</p>

<p>
After running for a while and printing a lot of testing output, the command should finish
by printing,
</p>

<pre>
ALL TESTS PASSED
</pre>

<p>
You can use <code>make.bash</code> instead of <code>all.bash</code>
to just build the compiler and the standard library without running the test suite.
Once the <code>go</code> tool is built, it will be installed as <code>bin/go</code>
under the directory in which you cloned the Go repository, and you can
run it directly from there.
See also
the section on how to <a href="#quick_test">test your changes quickly</a>.
</p>

<h3 id="mail">Step 4: Send changes for review</h3>

<p>
Once the change is ready and tested over the whole tree, send it for review.
This is done with the <code>mail</code> sub-command which, despite its name, doesn't
directly mail anything; it just sends the change to Gerrit:
</p>

<pre>
$ git codereview mail
</pre>

<p>
Gerrit assigns your change a number and URL, which <code>git</code> <code>codereview</code> <code>mail</code> will print, something like:
</p>

<pre>
remote: New Changes:
remote:   https://go-review.googlesource.com/99999 math: improved Sin, Cos and Tan precision for very large arguments
</pre>

<p>
If you get an error instead, check the
<a href="#troubleshooting_mail">Troubleshooting mail errors</a> section.
</p>

<p>
If your change relates to an open GitHub issue and you have followed the <a href="#commit_messages">
suggested commit message format</a>, the issue will be updated in a few minutes by a bot,
linking your Gerrit change to it in the comments.
</p>


<h3 id="revise">Step 5: Revise changes after a review</h3>

<p>
Go maintainers will review your code on Gerrit, and you will get notifications via e-mail.
You can see the review on Gerrit and comment on them there.
You can also reply
<a href="https://gerrit-review.googlesource.com/Documentation/intro-user.html#reply-by-email">using e-mail</a>
if you prefer.
</p>

<p>
If you need to revise your change after the review, edit the files in
the same branch you previously created, add them to the Git staging
area, and then amend the commit with
<code>git</code> <code>codereview</code> <code>change</code>:
</p>

<pre>
$ git codereview change     # amend current commit
(open $EDITOR)
$ git codereview mail       # send new changes to Gerrit
</pre>

<p>
If you don't need to change the commit description, just save and exit from the editor.
Remember not to touch the special Change-Id line.
</p>

<p>
Again, make sure that you always keep a single commit in each branch.
If you add more
commits by mistake, you can use <code>git rebase</code> to
<a href="https://stackoverflow.com/questions/31668794/squash-all-your-commits-in-one-before-a-pull-request-in-github">squash them together</a>
into a single one.
</p>

<h2 id="commit_messages">Good commit messages</h2>

<p>
Commit messages in Go follow a specific set of conventions,
which we discuss in this section.
</p>

<p>
Here is an example of a good one:
</p>

<pre>
math: improve Sin, Cos and Tan precision for very large arguments

The existing implementation has poor numerical properties for
large arguments, so use the McGillicutty algorithm to improve
accuracy above 1e10.

The algorithm is described at https://wikipedia.org/wiki/McGillicutty_Algorithm

Fixes #159
</pre>

<h3>First line</h3>

<p>
The first line of the change description is conventionally a short one-line
summary of the change, prefixed by the primary affected package.
</p>

<p>
A rule of thumb is that it should be written so to complete the sentence
"This change modifies Go to _____."
That means it does not start with a capital letter, is not a complete sentence,
and actually summarizes the result of the change.
</p>

<p>
Follow the first line by a blank line.
</p>

<h3>Main content</h3>

<p>
The rest of the description elaborates and should provide context for the
change and explain what it does.
Write in complete sentences with correct punctuation, just like
for your comments in Go.
Don't use HTML, Markdown, or any other markup language.
</p>

<p>
Add any relevant information, such as benchmark data if the change
affects performance.
The <a href="https://godoc.org/golang.org/x/tools/cmd/benchcmp">benchcmp</a>
tool is conventionally used to format
benchmark data for change descriptions.
</p>

<h3>Referencing issues</h3>

<p>
The special notation "Fixes #12345" associates the change with issue 12345 in the
<a href="https://golang.org/issue/12345">Go issue tracker</a>.
When this change is eventually applied, the issue
tracker will automatically mark the issue as fixed.
</p>

<p>
If the change is a partial step towards the resolution of the issue,
uses the notation "Updates #12345".
This will leave a comment in the issue
linking back to the change in Gerrit, but it will not close the issue
when the change is applied.
</p>

<p>
If you are sending a change against a subrepository, you must use
the fully-qualified syntax supported by GitHub to make sure the change is
linked to the issue in the main repository, not the subrepository.
All issues are tracked in the main repository's issue tracker.
The correct form is "Fixes golang/go#159".
</p>


<h2 id="review">The review process</h2>

<p>
This section explains the review process in detail and how to approach
reviews after a change has been mailed.
</p>


<h3 id="mistakes">Common beginner mistakes</h3>

<p>
When a change is sent to Gerrit, it is usually triaged within a few days.
A maintainer will have a look and provide some initial review that for first-time
contributors usually focuses on basic cosmetics and common mistakes.
These include things like:
</p>

<ul>
<li>
Commit message not following the <a href="#commit_messages">suggested
format</a>.
</li>

<li>
The lack of a linked GitHub issue.
The vast majority of changes
require a linked issue that describes the bug or the feature that the change
fixes or implements, and consensus should have been reached on the tracker
before proceeding with it.
Gerrit reviews do not discuss the merit of the change,
just its implementation.
<br>
Only trivial or cosmetic changes will be accepted without an associated issue.
</li>

<li>
Change sent during the freeze phase of the development cycle, when the tree
is closed for general changes.
In this case,
a maintainer might review the code with a line such as <code>R=go1.12</code>,
which means that it will be reviewed later when the tree opens for a new
development window.
You can add <code>R=go1.XX</code> as a comment yourself
if you know that it's not the correct time frame for the change.
</li>
</ul>

<h3 id="trybots">Trybots</h3>

<p>
After an initial reading of your change, maintainers will trigger trybots,
a cluster of servers that will run the full test suite on several different
architectures.
Most trybots complete in a few minutes, at which point a link will
be posted in Gerrit where you can see the results.
</p>

<p>
If the trybot run fails, follow the link and check the full logs of the
platforms on which the tests failed.
Try to understand what broke, update your patch to fix it, and upload again.
Maintainers will trigger a new trybot run to see
if the problem was fixed.
</p>

<p>
Sometimes, the tree can be broken on some platforms for a few hours; if
the failure reported by the trybot doesn't seem related to your patch, go to the
<a href="https://build.golang.org">Build Dashboard</a> and check if the same
failure appears in other recent commits on the same platform.
In this case,
feel free to write a comment in Gerrit to mention that the failure is
unrelated to your change, to help maintainers understand the situation.
</p>

<h3 id="reviews">Reviews</h3>

<p>
The Go community values very thorough reviews.
Think of each review comment like a ticket: you are expected to somehow "close" it
by acting on it, either by implementing the suggestion or convincing the
reviewer otherwise.
</p>

<p>
After you update the change, go through the review comments and make sure
to reply to every one.
You can click the "Done" button to reply
indicating that you've implemented the reviewer's suggestion; otherwise,
click on "Reply" and explain why you have not, or what you have done instead.
</p>

<p>
It is perfectly normal for changes to go through several round of reviews,
with one or more reviewers making new comments every time
and then waiting for an updated change before reviewing again.
This cycle happens even for experienced contributors, so
don't be discouraged by it.
</p>

<h3 id="votes">Voting conventions</h3>

<p>
As they near a decision, reviewers will make a "vote" on your change.
The Gerrit voting system involves an integer in the range -2 to +2:
</p>

<ul>
	<li>
	<b>+2</b> The change is approved for being merged.
	Only Go maintainers can cast a +2 vote.
	</li>
	<li>
	<b>+1</b> The change looks good, but either the reviewer is requesting
	minor changes before approving it, or they are not a maintainer and cannot
	approve it, but would like to encourage an approval.
	</li>
	<li>
	<b>-1</b> The change is not good the way it is but might be fixable.
	A -1 vote will always have a comment explaining why the change is unacceptable.
	</li>
	<li>
	<b>-2</b> The change is blocked by a maintainer and cannot be approved.
	Again, there will be a comment explaining the decision.
	</li>
</ul>

<h3 id="submit">Submitting an approved change</h3>

<p>
After the code has been +2'ed, an approver will
apply it to the master branch using the Gerrit user interface.
This is called "submitting the change".
</p>

<p>
The two steps (approving and submitting) are separate because in some cases maintainers
may want to approve it but not to submit it right away (for instance,
the tree could be temporarily frozen).
</p>

<p>
Submitting a change checks it into the repository.
The change description will include a link to the code review,
which will be updated with a link to the change
in the repository.
Since the method used to integrate the changes is Git's "Cherry Pick",
the commit hashes in the repository will be changed by
the submit operation.
</p>

<p>
If your change has been approved for a few days without being
submitted, feel free to write a comment in Gerrit requesting
submission.
</p>


<h3 id="more_information">More information</h3>

<p>
In addition to the information here, the Go community maintains a <a
href="https://golang.org/wiki/CodeReview">CodeReview</a> wiki page.
Feel free to contribute to this page as you learn more about the review process.
</p>



<h2 id="advanced_topics">Miscellaneous topics</h2>

<p>
This section collects a number of other comments that are
outside the issue/edit/code review/submit process itself.
</p>


<h3 id="copyright">Copyright headers</h3>

<p>
Files in the Go repository don't list author names, both to avoid clutter
and to avoid having to keep the lists up to date.
Instead, your name will appear in the
<a href="https://golang.org/change">change log</a> and in the <a
href="/CONTRIBUTORS"><code>CONTRIBUTORS</code></a> file and perhaps the <a
href="/AUTHORS"><code>AUTHORS</code></a> file.
These files are automatically generated from the commit logs periodically.
The <a href="/AUTHORS"><code>AUTHORS</code></a> file defines who &ldquo;The Go
Authors&rdquo;&mdash;the copyright holders&mdash;are.
</p>

<p>
New files that you contribute should use the standard copyright header:
</p>

<pre>
// Copyright 2018 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
</pre>

<p>
(Use the current year if you're reading this in 2019 or beyond.)
Files in the repository are copyrighted the year they are added.
Do not update the copyright year on files that you change.
</p>




<h3 id="troubleshooting_mail">Troubleshooting mail errors</h3>

<p>
The most common way that the <code>git</code> <code>codereview</code> <code>mail</code>
command fails is because the e-mail address in the commit does not match the one
that you used during <a href="#google_account">the registration process</a>.

<br>
If you see something like...
</p>

<pre>
remote: Processing changes: refs: 1, done
remote:
remote: ERROR:  In commit ab13517fa29487dcf8b0d48916c51639426c5ee9
remote: ERROR:  author email address XXXXXXXXXXXXXXXXXXX
remote: ERROR:  does not match your user account.
</pre>

<p>
you need to configure Git for this repository to use the
e-mail address that you registered with.
To change the e-mail address to ensure this doesn't happen again, run:
</p>

<pre>
$ git config user.email email@address.com
</pre>

<p>
Then change the commit to use this alternative e-mail address with this command:
</p>

<pre>
$ git commit --amend --author="Author Name &lt;email@address.com&gt;"
</pre>

<p>
Then retry by running:
</p>

<pre>
$ git codereview mail
</pre>


<h3 id="quick_test">Quickly testing your changes</h3>

<p>
Running <code>all.bash</code> for every single change to the code tree
is burdensome.
Even though it is strongly suggested to run it before
sending a change, during the normal development cycle you may want
to compile and test only the package you are developing.
</p>

<ul>
<li>
In general, you can run <code>make.bash</code> instead of <code>all.bash</code>
to only rebuild the Go tool chain without running the whole test suite.
Or you
can run <code>run.bash</code> to only run the whole test suite without rebuilding
the tool chain.
You can think of <code>all.bash</code> as <code>make.bash</code>
followed by <code>run.bash</code>.
</li>

<li>
In this section, we'll call the directory into which you cloned the Go repository <code>$GODIR</code>.
The <code>go</code> tool built by <code>$GODIR/make.bash</code> will be installed
in <code>$GODIR/bin/go</code> and you
can invoke it to test your code.
For instance, if you
have modified the compiler and you want to test how it affects the
test suite of your own project, just run <code>go</code> <code>test</code>
using it:

<pre>
$ cd &lt;MYPROJECTDIR&gt;
$ $GODIR/bin/go test
</pre>
</li>

<li>
If you're changing the standard library, you probably don't need to rebuild
the compiler: you can just run the tests for the package you've changed.
You can do that either with the Go version you normally use, or
with the Go compiler built from your clone (which is
sometimes required because the standard library code you're modifying
might require a newer version than the stable one you have installed).

<pre>
$ cd $GODIR/src/hash/sha1
$ [make changes...]
$ $GODIR/bin/go test .
</pre>
</li>

<li>
If you're modifying the compiler itself, you can just recompile
the <code>compile</code> tool (which is the internal binary invoked
by <code>go</code> <code>build</code> to compile each single package).
After that, you will want to test it by compiling or running something.

<pre>
$ cd $GODIR/src
$ [make changes...]
$ $GODIR/bin/go install cmd/compile
$ $GODIR/bin/go build [something...]   # test the new compiler
$ $GODIR/bin/go run [something...]     # test the new compiler
$ $GODIR/bin/go test [something...]    # test the new compiler
</pre>

The same applies to other internal tools of the Go tool chain,
such as <code>asm</code>, <code>cover</code>, <code>link</code>, and so on.
Just recompile and install the tool using <code>go</code>
<code>install</code> <code>cmd/&lt;TOOL&gt;</code> and then use
the built Go binary to test it.
</li>

<li>
In addition to the standard per-package tests, there is a top-level
test suite in <code>$GODIR/test</code> that contains
several black-box and regression tests.
The test suite is run
by <code>all.bash</code> but you can also run it manually:

<pre>
$ cd $GODIR/test
$ $GODIR/bin/go run run.go
</pre>
</ul>

<h3 id="subrepos">Contributing to subrepositories (golang.org/x/...)</h3>

<p>
If you are contributing a change to a subrepository, obtain the
Go package using <code>go get</code>.
For example, to contribute
to <code>golang.org/x/oauth2</code>, check out the code by running:
</p>

<pre>
$ go get -d golang.org/x/oauth2/...
</pre>

<p>
Then, change your directory to the package's source directory
(<code>$GOPATH/src/golang.org/x/oauth2</code>), and follow the
normal contribution flow.
</p>


<h3 id="cc">Specifying a reviewer / CCing others</h3>

<p>
Unless explicitly told otherwise, such as in the discussion leading
up to sending in the change, it's better not to specify a reviewer.
All changes are automatically CC'ed to the
<a href="https://groups.google.com/group/golang-codereviews">golang-codereviews@googlegroups.com</a>
mailing list.
If this is your first ever change, there may be a moderation
delay before it appears on the mailing list, to prevent spam.
</p>

<p>
You can specify a reviewer or CC interested parties
using the <code>-r</code> or <code>-cc</code> options.
Both accept a comma-separated list of e-mail addresses:
</p>

<pre>
$ git codereview mail -r joe@golang.org -cc mabel@example.com,math-nuts@swtch.com
</pre>


<h3 id="sync">Synchronize your client</h3>

<p>
While you were working, others might have submitted changes to the repository.
To update your local branch, run
</p>

<pre>
$ git codereview sync
</pre>

<p>
(Under the covers this runs
<code>git</code> <code>pull</code> <code>-r</code>.)
</p>


<h3 id="download">Reviewing code by others</h3>

<p>
As part of the review process reviewers can propose changes directly (in the
GitHub workflow this would be someone else attaching commits to a pull request).

You can import these changes proposed by someone else into your local Git repository.
On the Gerrit review page, click the "Download ▼" link in the upper right
corner, copy the "Checkout" command and run it from your local Git repo.
It will look something like this:
</p>

<pre>
$ git fetch https://go.googlesource.com/review refs/changes/21/13245/1 &amp;&amp; git checkout FETCH_HEAD
</pre>

<p>
To revert, change back to the branch you were working in.
</p>


<h3 id="git-config">Set up git aliases</h3>

<p>
The <code>git-codereview</code> command can be run directly from the shell
by typing, for instance,
</p>

<pre>
$ git codereview sync
</pre>

<p>
but it is more convenient to set up aliases for <code>git-codereview</code>'s own
subcommands, so that the above becomes,
</p>

<pre>
$ git sync
</pre>

<p>
The <code>git-codereview</code> subcommands have been chosen to be distinct from
Git's own, so it's safe to define these aliases.
To install them, copy this text into your
Git configuration file (usually <code>.gitconfig</code> in your home directory):
</p>

<pre>
[alias]
	change = codereview change
	gofmt = codereview gofmt
	mail = codereview mail
	pending = codereview pending
	submit = codereview submit
	sync = codereview sync
</pre>


<h3 id="multiple_changes">Sending multiple dependent changes</h3>

<p>
Advanced users may want to stack up related commits in a single branch.
Gerrit allows for changes to be dependent on each other, forming such a dependency chain.
Each change will need to be approved and submitted separately but the dependency
will be visible to reviewers.
</p>

<p>
To send out a group of dependent changes, keep each change as a different commit under
the same branch, and then run:
</p>

<pre>
$ git codereview mail HEAD
</pre>

<p>
Make sure to explicitly specify <code>HEAD</code>, which is usually not required when sending
single changes.
</p>
