git-lfs/CONTRIBUTING.md

83 lines
3.8 KiB
Markdown
Raw Normal View History

2015-03-19 19:30:55 +00:00
## Contributing to Git Large File Storage
Hi there! We're thrilled that you'd like to contribute to this project. Your
help is essential for keeping it great.
## Feature Requests
Feature requests are welcome, but will have a much better chance of being
accepted if they meet the first principles for the project. Git LFS is intended
2015-06-19 15:40:28 +00:00
for end users, not Git experts. It should fit into the standard workflow as
much as possible, and require little client configuration.
* Large objects are pushed to Git LFS servers during git push.
* Large objects are downloaded during git checkout.
* Git LFS servers are linked to Git remotes by default. Git hosts can support
users without requiring them to set up anything extra. Users can access
different Git LFS servers like they can with different Git remotes.
* Upload and download requests should use the same form of authentication built
into Git: SSH through public keys, and HTTPS through Git credential helpers.
* Git LFS servers use a JSON API designed around progressive enhancement.
Servers can simply host off cloud storage, or implement more efficient methods
of transferring data.
You can see what the Git LFS team is prioritizing work on in the
[roadmap](./ROADMAP.md).
## Submitting a pull request
0. [Fork][] and clone the repository
0. Configure and install the dependencies: `script/bootstrap`
0. Make sure the tests pass on your machine: `script/test`
0. Create a new branch: `git checkout -b my-branch-name`
0. Make your change, add tests, and make sure the tests still pass
0. Push to your fork and [submit a pull request][pr]
2015-05-27 14:34:13 +00:00
0. Accept the [GitHub CLA][cla]
0. Pat your self on the back and wait for your pull request to be reviewed.
Here are a few things you can do that will increase the likelihood of your pull request being accepted:
- Follow the [style guide][style] where possible.
- Write tests.
2015-04-08 19:33:33 +00:00
- Update documentation as necessary. Commands have [man pages](./docs/man).
- Keep your change as focused as possible. If there are multiple changes you
would like to make that are not dependent upon each other, consider submitting
them as separate pull requests.
- Write a [good commit message](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html).
## Updating 3rd party packages
0. Update `Nut.toml`.
0. Run `script/vendor` to update the code in the `.vendor/src` directory.
2015-03-19 19:30:55 +00:00
0. Commit the change. Git LFS vendors the full source code in the repository.
0. Submit a pull request.
2015-04-02 21:57:52 +00:00
## Releasing
If you are the current maintainer:
* Create a [new draft Release](https://github.com/github/git-lfs/releases/new).
List any changes with links to related PRs.
* Make sure your local dependencies are up to date: `script/bootstrap`
* Ensure that tests are green: `script/test`
* Bump the version in `lfs/lfs.go`, [like this](https://github.com/github/git-lfs/commit/dd17828e4a6f2394cbba8621037199dc28f046e8).
* Add the new version to the top of CHANGELOG.md
2015-04-02 21:57:52 +00:00
* Build for all platforms with `script/bootstrap -all` (you need Go setup for
cross compiling with Mac, Linux, FreeBSD, and Windows support).
* Test the command locally. The compiled version will be in `bin/releases/{os}-{arch}/git-lfs-{version}/git-lfs`
* Get the draft Release ID from the GitHub API: `curl -in https://api.github.com/repos/github/git-lfs/releases`
* Run `script/release -id {id}` to upload all of the compiled binaries to the
release.
* Publish the Release on GitHub.
## Resources
- [Contributing to Open Source on GitHub](https://guides.github.com/activities/contributing-to-open-source/)
- [Using Pull Requests](https://help.github.com/articles/using-pull-requests/)
- [GitHub Help](https://help.github.com)
2015-03-19 19:30:55 +00:00
[fork]: https://github.com/github/git-lfs/fork
[pr]: https://github.com/github/git-lfs/compare
[style]: https://github.com/golang/go/wiki/CodeReviewComments
2015-05-27 14:34:13 +00:00
[cla]: https://cla.github.com/github/git-lfs/accept