1# VIC Branching 2 3This document is used to define a strategy to enable development and testing of 4release candidate, patch found issues, while allowing development of future 5releases by way of branching and tagging. 6 7## Requirements 8 9_(Not in priority order)_ 10* To insulate development of future releases from RC / GA testing and development. 11 * Allow development of future releases. 12 * Avoid breaking RC releases while in testing. 13 14_Non requirements_ 15* Define how to enable development of new features on MASTER or otherwise. 16* Define how to test RC / GA releases. 17* Define criteria for backporting or forward porting of found bugfixes, features, etc. 18* Define release trains for patching GA released builds. 19* Define release criteria for RC 20 21## Proposal 22 23We can keep changes isolated from RC / GA testing by way of `git` branches. 24 25###Branching### 26* Use [master](http://github.com/vmware/vic) for future release work. 27* Use RC branch (`releases/MAJOR.MINOR.MACRO`) for RC release work. 28 * `TAG` branch for each RC 29 * `TAG` with `MACRO++` for each patch. 30 31###Accounting### 32* Targeting 33 * Bugs found in RC branch need an issue before merging fix to branch targeted to RC, e.g. `targeted/<RC branch name>` 34 * Ideally patch should be merged to `MASTER` first if it exists there too. 35 * Only if issue is targeted for RC, a different PR with the same issue number for the RC branch. 36 * Only close issue after each relevant and targeted release has had a fixed merged to it. We can use targeting to verify this. 37* Bugs found in `MASTER` or any RC branch need to be tagged, e.g.`exists/<branches>` 38* The release branch will live as long as our support contract exists on that branch, once support sunsets we can remove the branch 39* The CI system will build all branches within the `releases/*` naming convention on push or tag event and publish the binary to our public binary location 40 41``` 42 43MASTER --------------------------------------------------> 44 \ \ 45 0.7---------------- \ 46 \ \ \ 47 TAG 0.7.1 TAG 0.7.2 \ 48 \ 49 0.8----> 50 51 52``` 53