This guide contains all the information needed to become a contributor on the Qubinode project#### Please follow our git branching model so that everyone will have a pleasant experience contributing to this project.
The following are the only branches that will exists on the official Qubinode project (https://github.com/Qubinode):
- main holds the latest production ready code
- Rules: ** Should be the same for every Git user
- develop holds latest changes for next release
- Rules: ** Merge to main branch when all codes are stable ** Tag main branch with new release number after merging from develop branch
The supporting branches will only exist on the developer's repository#### Once the code is ready to be pushed to either the main or develop branch#### Once the merge request is accepted, the developer can delete the supporting branch.
- feature holds code for developed new features that will be merged in the next or future Qubinode release
- Rules: ** May branch off from the develop branch ** Must merge back to the develop branch ** Exists on developer's repository only ** Discarded once all code are merged to develop bramch
- release support preparation of a new production release#### Use for minor changes or bugfixes
- Rules: ** May branch off from the develop branch ** Must merge back to the develop and main branch ** Exists on developer's repository only ** Only core developers can create and push release branch
- hotfix Use to push a fix for an error in the main branch
- Rules: ** May branch off from main branch ** Must be merged back into main and develop branch
$ git checkout develop
$ git fetch develop
$ git checkout -b feature-<issue number> develop
$ git checkout develop
$ git merge --no-ff feature-<issue number>
$ git branch -d feature-<issue number>
$ git push origin develop
$ git checkout main
$ git checkout -b hotfix-<issue number> main
$ git checkout main
$ git merge --no-ff hotfix-<issue number>
$ git tag -a <release minor release number>
$ git checkout develop
$ git merge --no-ff hotfix-<issue number>
$ git branch -d hotfix-<issue number>
After coding all features, hotfixes, and meet the requirement for the next Qubinode release, we will create a release branch that's tagged with a code name based on the next alphabetically available fruit ( i.e#### apple, banana)
$ git checkout -b release-<fruit nomenclature, i.e apple> develop
$ git tag -a <fruit nomenclature, i.e apple>
$ git commit -a -m "next qubinode release"
$ git checkout main
$ git merge --no-ff release-<fruit nomenclature, i.e apple>
$ git tag -a <next release version i.e 2.2>
$ git checkout develop
$ git merge --no-ff <next release version i.e 2.2>
$ git branch -d release-<fruit nomenclature, i.e apple>