As an open source project, Epimetheus welcomes contributions of many forms.
Examples of contributions include:
- Code patches
- Documentation improvements
- Bug reports and patch reviews
Patches can be submitted as pull requests, but if you don't file an issue, it may be ignored. Please file an issue to suggest changes.
Please start a new branch name with feature
, bug
or hotfix
depending on the type of the issue, and then add the related issue's number. The rest of the branch’s name should be short and descriptive.
Example:
“feature/21-more-documentation”
Commit messages should always start with the number of the issue that they're related to. Please avoid commits that are not related to any issue.
- If you have a small fix that's somehow related to the current issue on hand, feel free to fix it as well.
- If your fix isn't related to the issue, consider creating a new issue and create a different pull request.
- If you have a small fix that's not related to the issue and decide to fix it anyway, please remember to mention it in the issue's or pull request's description.
- Small and general fixes like correcting a typo or updating the documentation don't require an issue number.
Before making a pull request, please rebase the local branch to the develop
branch and squash any unnecessary commits.
Pull request's title should contain the related issue's number, and the pull request should be linked to the related issue.
Pull request requires one approval before it’s possible to merge. The pull request is merged by the reviewer, but in case there are only little improvements to be done after the first review, the reviewer can give an approval beforehand and after the fixes have been done, the pull request’s creator can merge it.
If the individual commits add value to the history and you want to keep all of them, please use the “Rebase and merge” option when merging the pull request.
If the individual commits don't add value to the history, please use the "Squash and merge" option to squash the commits into a single commit when merging the pull request.
Branches should be automatically deleted after they are merged.
Epimetheus project uses EditorConfig to manage the coding style. See the .editorconfig file for settings.
Project uses semantic versioning, and all the pull requests are first created in to develop
branch. develop
is our trunk branch and can be considered the bleeding edge. master
branch is for our stable semantically versioned releases. Releases are done regularly when there are new commits in the development branch. The releases are done with a merge commit that has release version numbering in semantic order (Major, Minor, Patch) (Semantic versioning: https://semver.org/)
- Checkout to
develop
branch:
git checkout develop
- Checkout to a new branch and name it according to the issue's type and number:
git checkout -b <issuetype/issuenumber-description>
- Commit changes with a clear and descriptive note that starts with the issue number:
git add
git commit -m "issuenumber - description of changes"
- Sync with
develop
branch:
git checkout develop
git pull
- Rebase the
develop
branch into the local branch. Use--interactive/--i
flag to reword or squash commits:
git checkout <issuetype/issuenumber-description>
git rebase develop
- Push the local branch:
git push
- Create a pull request and follow the given guidelines. Make sure the
base
is set todevelop
.
- Checkout to
develop
branch:
git checkout master
git pull
git checkout develop
git pull
- Check what has changed since previous release. This command shows the commit message oneliners since previous release:
git log --pretty=%s master..HEAD
- Based on the changes determine the correct version version bump (
major
/minor
/patch
). Usually with new features it isminor
. This command updates the version number for the npm package.
npm version minor
-
Update the same version in backend in
backend_server/server.py
:VERSION_NUMBER
-
Update Release notes in
README.md
. You can first broadly characterize the changes and then list the features (i.e. copy the output ofgit log --pretty=%s master..HEAD
). -
Commit the changes
git add -u
git commit -m "release x.x.x"
- Push the changes and make a pull request to
master
git push
- Once the release has been merge make a new Github release that will also tag the commit. Set the tag as the new version and make sure it points to current master. Release title is the version. Copy the list of changes to the release notes area below. If issue numbers are prefixed with
#
Github will add a handy link to the corresponding issue. Finally publish release.