2015-03-19 19:30:55 +00:00
|
|
|
## Contributing to Git Large File Storage
|
2015-02-07 16:51:55 +00:00
|
|
|
|
2015-02-07 17:00:36 +00:00
|
|
|
Hi there! We're thrilled that you'd like to contribute to this project. Your
|
|
|
|
help is essential for keeping it great.
|
|
|
|
|
2015-06-18 13:59:50 +00:00
|
|
|
## 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
|
2015-06-18 13:59:50 +00:00
|
|
|
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).
|
|
|
|
|
2015-02-07 17:00:36 +00:00
|
|
|
## 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]
|
2015-02-07 17:00:36 +00:00
|
|
|
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).
|
2015-02-07 17:00:36 +00:00
|
|
|
- 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
|
|
|
|
|
2015-06-18 13:59:50 +00:00
|
|
|
0. Update `Nut.toml`.
|
2015-02-07 17:00:36 +00:00
|
|
|
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.
|
2015-02-07 17:00:36 +00:00
|
|
|
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).
|
2015-04-30 15:40:47 +00:00
|
|
|
* 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.
|
|
|
|
|
2015-02-07 17:00:36 +00:00
|
|
|
## 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
|
2015-02-07 17:00:36 +00:00
|
|
|
[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
|