80 lines
2.2 KiB
Markdown
80 lines
2.2 KiB
Markdown
|
# Contributing
|
||
|
|
||
|
Thanks for helping to make Fx better for everyone!
|
||
|
|
||
|
If you'd like to add new exported APIs, please [open an issue][open-issue]
|
||
|
describing your proposal — discussing API changes ahead of time makes
|
||
|
pull request review much smoother.
|
||
|
|
||
|
Note that you'll need to sign [Uber's Contributor License Agreement][cla]
|
||
|
before we can accept any of your contributions. If necessary, a bot will remind
|
||
|
you to accept the CLA when you open your pull request.
|
||
|
|
||
|
## Setup
|
||
|
|
||
|
[Fork][fork], then clone the repository:
|
||
|
|
||
|
```
|
||
|
mkdir -p $GOPATH/src/go.uber.org
|
||
|
cd $GOPATH/src/go.uber.org
|
||
|
git clone git@github.com:your_github_username/fx.git
|
||
|
cd fx
|
||
|
git remote add upstream https://github.com/uber-go/fx.git
|
||
|
git fetch upstream
|
||
|
```
|
||
|
|
||
|
Install Fx's dependencies:
|
||
|
|
||
|
```
|
||
|
make dependencies
|
||
|
```
|
||
|
|
||
|
Make sure that the tests and the style checkers pass:
|
||
|
|
||
|
```
|
||
|
make test
|
||
|
make lint
|
||
|
```
|
||
|
|
||
|
For `make lint` to work, you must be using the minor version of Go specified in
|
||
|
the Makefile's `LINTABLE_MINOR_VERSIONS` variable. This is fine, but it means
|
||
|
that you'll only discover style violations after you open your pull request.
|
||
|
|
||
|
## Making changes
|
||
|
|
||
|
Start by creating a new branch for your changes:
|
||
|
|
||
|
```
|
||
|
cd $GOPATH/src/go.uber.org/fx
|
||
|
git checkout master
|
||
|
git fetch upstream
|
||
|
git rebase upstream/master
|
||
|
git checkout -b cool_new_feature
|
||
|
```
|
||
|
|
||
|
Make your changes, and then check that `make lint` and `make test` still pass.
|
||
|
If you're satisfied with your changes, push them to your fork.
|
||
|
|
||
|
```
|
||
|
git push origin cool_new_feature
|
||
|
```
|
||
|
|
||
|
Then use the GitHub UI to [open a pull request][pr].
|
||
|
|
||
|
At this point, you're waiting on us to review your changes. We *try* to respond
|
||
|
to issues and pull requests within a few business days, and we may suggest some
|
||
|
improvements or alternatives. Once your changes are approved, one of the
|
||
|
project maintainers will merge them.
|
||
|
|
||
|
We're much more likely to approve your changes if you:
|
||
|
|
||
|
* Add tests for new functionality.
|
||
|
* Write a [good commit message][commit-message].
|
||
|
* Maintain backward compatibility.
|
||
|
|
||
|
[fork]: https://github.com/uber-go/fx/fork
|
||
|
[open-issue]: https://github.com/uber-go/fx/issues/new
|
||
|
[cla]: https://cla-assistant.io/uber-go/fx
|
||
|
[commit-message]: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html
|
||
|
[pr]: https://github.com/uber-go/fx/compare
|