The following is a set of guidelines for contributing to the vagrant-service-manager plugin. These are guidelines, please use your best judgment and feel free to propose changes to this document.
You can submit issues with respect to the vagrant-service-manager plugin here. Make sure you include all the relevant details pertaining the issue.
Before submitting a new issue, it is suggested to check the existing issues in order to avoid duplication. The vagrant-service-manager plugin works closely with the Atomic Developer Bundle and the adb-utils RPM. You may wish to review the issues in both these repositories as well.
If you are just getting started with Git and GitHub there are a few prerequisite steps.
-
Make sure you have a GitHub account.
-
Fork the vagrant-service-manager repository. As discussed in the linked page, this also includes:
-
Setting up your local git install.
-
Cloning your fork.
-
Create a
topic
branch on which you will work. The convention is to name the branch
using the issue key you are working on. If there is not already an issue
covering the work you want to do, create one (see
submitting issues). Assuming for example you
will be working from the master branch and working on the GitHub issue
123 : git checkout -b fix-123 master
Do your work! Refer to the development section in the README to get started.
-
Make commits of logical units.
-
Be sure to use the GitHub issue key in the commit message, eg
Fix #123 …
. -
Make sure your code conforms to the coding style
-
Make sure you have added the necessary tests for your changes.
-
Make sure you have added appropriate documentation updates.
-
Run all the tests to assure nothing else was accidentally broken.
-
Push your changes to the topic branch in your fork of the repository.
-
Initiate a pull request.
-
All changes need at least 2 ACKs from maintainers before they will be merged. If the author of the PR is a maintainer, their submission is considered to be the first ACK. Therefore, pull requests from maintainers only need one additional ACK. By "2 ACKs" we mean that two maintainers must acknowledge that the change is a good one.
A project maintainer will merge the pull request. He should avoid using the GitHub UI for the merge and prefer merges over the the command line to avoid merge commits and to keep a linear commit history. Here is an example work-flow assuming issue 123 from above:
# Create a local branch for the pull request $ git checkout -b fix-123 master # Pull the changes $ git pull <remote of the pull request> fix-123 # If necessary rebase changes on master to ensure we have a fast forward. $ git rebase -i master # If required, update CHANGELOG.md in the unreleased section. Commit! # Merge changes into master $ git checkout master $ git merge fix-123 # Push to origin $ git push origin master
-
Make sure the HEAD of development builds and passes all tests:
bundle exec rake clean rubocop test features install
. You can also verify against CI -
Review milestone for the current release
-
Make sure all issues are resolved
-
Move unresolved issues into an upcoming release
-
Close milestone
-
-
Update the CHANGELOG
-
Update version.rb with the correct release version. Consider Semantic Versioning guidelines when deciding on the release version
-
Commit CHANGELOG and version.rb using commit message of the form:
vagrant-service-manager version=<version>
-
Push commit to upstream
-
Release the gem:
bundle exec rake release
-
Create a Github release and paste change log for release
-
Update version.rb with the next anticipated release version, eg 1.42.0.dev
-
Commit with message:
vagrant-service-manager setting dev version <version>.dev
-
Push upstream
-
Brian Exelbierd <bexelbie@redhat.com> @bexelbie
-
Budh Ram Gurung <bgurung@redhat.com> @budhrg
-
Hardy Ferentschik @hferentschik
-
Lalatendu Mohanty <lmohanty@redhat.com> @LalatenduMohanty
-
Navid Shaikh <nshaikh@redhat.com> @navidshaikh