You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

82 lines
2.9 KiB

  1. # MinIO Contribution Guide [![Slack](https://slack.min.io/slack?type=svg)](https://slack.min.io) [![Docker Pulls](https://img.shields.io/docker/pulls/minio/minio.svg?maxAge=604800)](https://hub.docker.com/r/minio/minio/)
  2. ``MinIO`` community welcomes your contribution. To make the process as seamless as possible, we recommend you read this contribution guide.
  3. ## Development Workflow
  4. Start by forking the MinIO GitHub repository, make changes in a branch and then send a pull request. We encourage pull requests to discuss code changes. Here are the steps in details:
  5. ### Setup your MinIO GitHub Repository
  6. Fork [MinIO upstream](https://github.com/minio/minio/fork) source repository to your own personal repository. Copy the URL of your MinIO fork (you will need it for the `git clone` command below).
  7. ```sh
  8. git clone https://github.com/minio/minio
  9. cd minio
  10. go install -v
  11. ls $(go env GOPATH)/bin/minio
  12. ```
  13. ### Set up git remote as ``upstream``
  14. ```sh
  15. $ cd minio
  16. $ git remote add upstream https://github.com/minio/minio
  17. $ git fetch upstream
  18. $ git merge upstream/master
  19. ...
  20. ```
  21. ### Create your feature branch
  22. Before making code changes, make sure you create a separate branch for these changes
  23. ```
  24. git checkout -b my-new-feature
  25. ```
  26. ### Test MinIO server changes
  27. After your code changes, make sure
  28. - To add test cases for the new code. If you have questions about how to do it, please ask on our [Slack](https://slack.min.io) channel.
  29. - To run `make verifiers`
  30. - To squash your commits into a single commit. `git rebase -i`. It's okay to force update your pull request.
  31. - To run `make test` and `make build` completes.
  32. ### Commit changes
  33. After verification, commit your changes. This is a [great post](https://chris.beams.io/posts/git-commit/) on how to write useful commit messages
  34. ```
  35. git commit -am 'Add some feature'
  36. ```
  37. ### Push to the branch
  38. Push your locally committed changes to the remote origin (your fork)
  39. ```
  40. git push origin my-new-feature
  41. ```
  42. ### Create a Pull Request
  43. Pull requests can be created via GitHub. Refer to [this document](https://help.github.com/articles/creating-a-pull-request/) for detailed steps on how to create a pull request. After a Pull Request gets peer reviewed and approved, it will be merged.
  44. ## FAQs
  45. ### How does ``MinIO`` manage dependencies?
  46. ``MinIO`` uses `go mod` to manage its dependencies.
  47. - Run `go get foo/bar` in the source folder to add the dependency to `go.mod` file.
  48. To remove a dependency
  49. - Edit your code and remove the import reference.
  50. - Run `go mod tidy` in the source folder to remove dependency from `go.mod` file.
  51. ### What are the coding guidelines for MinIO?
  52. ``MinIO`` is fully conformant with Golang style. Refer: [Effective Go](https://github.com/golang/go/wiki/CodeReviewComments) article from Golang project. If you observe offending code, please feel free to send a pull request or ping us on [Slack](https://slack.min.io).