Scorum
|
The git guidelines for Scorum are influenced by the Graphene git guidelines as well as Git Flow and [this blog post](http://www.draconianoverlord.com/2013/09/07/no-cherry-picking.html).
master
: Points to the current release of Scorum. Witnesses should be running this branch. Each release commit will be tagged vMajor.Hardfork.Release
. When we get ready to release we will merge feature branches into develop
and then do a single merge into master
via a Pull Request. All PRs to master
must pass automated testing to be merged.develop
: The active development branch. We will strive to keep develop
in a working state. All PRs must pass automated tests before being merged. While this is not a guarantee that develop
is bug-free, it will guarantee that the branch is buildable in our standard build configuration and passes the current suite of tests. That being said, running a node from develop
has risks. We recommend that any block producing node build from master
. If you want to test new features, develop is the correct branch.All changes should be developed in their own branch. These branches should branch from develop
and then merged back into develop
when they are tested and ready. If an issue needs another issue as a dependency, branch from develop
, merge the dependent issue branch into the new branch, and begin development. The naming scheme we use is the issue number, then a dash, followed by a shorthand description of the issue. For example, issue 22 is to allow the removal of an upvote. Branch 22-undo-vote
was used to develop the patch for this issue.
Some changes are so minor as to not require an issue, e.g. changes to logging. Because the requirement of automated testing, create an issue for them. We err on the side of over-documentation rather than under-documentation. Branch from develop
, make your fix, and create a pull request into develop
.
Suggested formatting for such branches missing an issue is YYYYMMDD-shortname
, e.g. 20160913-documentation-update
. (The date in the branch is so that we can prune old/defunct ones periodically to keep the repo tidy.)
All changes to develop
and master
are done through GitHub Pull Requests (PRs). This is done for several reasons:
All pull requests should reference the issue(s) they relate to in order to create a chain of documentation.
If your pull request has merge conflicts, rebase against origin/develop
, resolve the merge conflicts, force push to your branch, and resubmit the pull request.
origin/master
should never be force pushed.origin/develop
should never be force pushed. All updates to develop
are done through PRs so force pushing is not allowed.vMajor.Hardfork.Release
(Ex. v0.5.0 is the version for the Hardfork 5 release). Releases should be made only on master
.master
, enforced through pull requests.develop
, enforced through pull requests.develop
, enforced through pull requests.