# Contributing to Landrush
- [Working on an issue](#working-on-an-issue)
- [Merging pull requests](#merging-pull-requests)
- [Releasing](#releasing)
- [Maintainers](#maintainers)
The following is a set of guidelines for contributing to Landrush.
These are just guidelines, please use your best judgment and feel free
to propose changes to this document in a pull request.
At this point, this document is not complete, but as decisions are made
they will be added to this document.
## Working on an issue
* All changes should have a matching issue in the GitHub [issue tracker](https://github.com/vagrant-landrush/landrush/issues). If there is none, create one.
* Prepend each commit of a porposed change with the GitHub issue key, eg `Issue #xyz Fixing foo in bar`
* All changes should be applied to master via [pull requests](https://help.github.com/articles/using-pull-requests/) (even from maintainers).
* All changes should include documentation updates.
* Small changes need only 1 ACK. Larger changes need 2 ACKs from
maintainers before they will be merged. If the author of the pull request is a
maintainer, the submission is considered 1 of the 2 ACKs. Therefore pull requests
from maintainers only require one additional ACK. By "2 ACKs" we mean
that 2 maintainers must acknowledge that the change is a good one. The
2nd person to ACK the pull request should merge the pull request with a
comment including their agreement. We default to moving forward and using
revert if needed.
## Merging pull requests
1. Merging committer should merge the pull request. Avoid using GitHub UI and
prefer merges over the the command line to avoid merge commits and to keep
a linear commit history:
```
# Create a local branch for the pull request
$ git checkout -b master
# Pull the changes
$ git pull
# If necessary rebase changes on master to ensure we have a fast forward. Also resolve any conflicts
$ git rebase -i master
# Merge changes into master
$ git checkout master
$ git merge
# Update changelog in the unreleased section. Commit!
# Push to origin
$ git push origin master
```
## Releasing
Prereqs:
* Push access to the `landrush` GitHub repository
* Rubygems owner of the `landrush` gem
Steps:
1. Update `lib/landrush/version.rb` with version number.
1. Update `CHANGELOG.md` header with version number and current date.
1. Make release commit: `git add lib/landrush/version.rb CHANGELOG.md; git commit -m 'cut vX.Y.Z'`
1. Make release tag: `git tag -m vX.Y.Z vX.Y.Z`
1. Push release commit: `git push origin master`
1. Build release: `rake build`
1. Push released gem: `gem push pkg/landrush-X.Y.Z.gem`
1. Update CHANGELOG to add an "Unreleased" section, commit as "clean up after vX.Y.Z".
## Maintainers
* Brian Exelbierd (@bexelbie)
* Eric Sorenson (@ahpook)
* Florian Holzhauer (@fh)
* Hardy Ferentschik (@hferentschik)
* Josef Strzibny (@strzibny)
* Paul Hinze (@phinze)
* Reto Kaiser (@njam)