QUDA Development model - lattice/quda GitHub Wiki
QUDA Development model
QUDA is using git and github and its features for development. We do follow a Gitflow model. If you want to contribute to QUDA please take some minutes to read the linked description of the model.
Branches
We usually don't work with forks but the repository on github is our central repository. We use branches as described in the gitflow model.
branch: master
This branch always reflects the latest released version. YOU MUST NEVER PUSH INTO MASTER
branch: develop
This branch is used to merge in feature for a future release. It might be stable or unstable. If you want to add a new feature to QUDA start you feature branch (see below) from develop.
branch: release/a.b.x
This is the branch used for preparation of a release of version a.b.x. a.b.x might be e.g. 0.7.x. In this branches we only fix urgent bugs and prepare releases. Once a release is finished we merge this branch into master and then keep it around for future bugfixes in the a.b series. If we increase a or b for a release with new features a corresponding release branch will be created from develop.
branches: feature/name
These are branches used for development of new features that will be included in a future version of QUDA.
branches: hotfix/name
These branches are for bugfixes that will go into the preparation of a release. I.e. they will be primarily merged into the corresponding release/a.b.x branch. If you need to fix an urgent bug start your hotfoot branch from the release branch.
Pull requests
As a way to have some basic / limited peer review of the code before it goes either into develop or a release branch we rely on github's pull requests. This means you never merge your branch into develop or a release branch yourself but create a pull request on github.