The first step is to configure your environment. Please follow the steps outlined in Becoming a contributor as the setup for contributing to the
protobuf project is identical to that for contributing to the
The project welcomes submissions, but to make sure things are well coordinated we ask that everyone discuss any significant changes before starting work. Best practice is to connect your work to the issue tracker, either by filing a new issue or by claiming an existing issue. Issues related to the new API should have a “APIv2:” prefix in the title.
protobuf project performs development in Gerrit. Unfortunately, we are not currently able to accept GitHub pull requests. Below are the steps to send a change using Gerrit.
Step 1: Clone the Go source code:
$ git clone https://go.googlesource.com/protobuf
Step 2: Setup a Git hook: Setup a hook to run the tests prior to submitting changes to Gerrit:
$ (cd protobuf/.git/hooks && echo -e '#!/bin/bash\n./test.bash' > pre-push && chmod a+x pre-push)
Step 3: Prepare changes in a new branch, created from the
master branch. To commit the changes, use
git codereview change; that will create or amend a single commit in the branch.
$ 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.]
Step 4: Send the changes for review to Gerrit using
git codereview mail.
$ git codereview mail # send changes to Gerrit
Step 5: After a review, there may be changes that are required. Do so by applying changes to the same commit and mail them to Gerrit again:
$ [edit files...] $ git add [files...] $ git codereview change # update same commit $ git codereview mail # send to Gerrit again
git codereview mail, it will call
git push under the hood, which will trigger the test hook that was setup in step 2.
The Contribution Guidelines for the Go project provides additional details that are also relevant to contributing to the Go