Choosing a development model
After the discussion in the chat. We currently use a development model where we push everything to master and have that semi-stable and then use feature/bugfix branches for everything.
I propose we use gitflow which we already do for 80% and make a develop
branch and make that the default branch. The documentation for gitflow is http://nvie.com/posts/a-successful-git-branching-model/
The changes from the current process:
- We merge every PR to
develop
instead ofmaster
- After every release cycle there is a single merge commit to
master
fromdevelop
- Versions should be tagged on the
master
branch
The major part of development; the PR's would still be the same. We should also decide on what the release cycle for pmbootstrap would be to master
.
One way would be to make a fully rolling release with a unstable
branch (develop) and a stable
branch (master) and longer supported versions which are the tags. The linux kernel is basically doing a similar release cycle with the weekly RC releases.
The basic rules for gitflow:
- Master should be tested and stable
- Develop might break but is generally stable and hopefully breakage would be detected before releasing to master
- The feature branches should be functionally independent and should only contain a single feature
- Seperate commits inside the feature branch might not build but develop should always build (which is currently tested by travis)
- If master breaks then a
hotfix/[name]
branch is made from master instead of develop and this is merged again to bothmaster
anddevelop
- Probably more things I forgot