You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Next »

The COmanage Project has adopted a modified version of git-flow as its branch management strategy. In short, the differences are

  1. One hotfix branch exists per minor release. That is, hotfix-1.0.x is used for (eg) 1.0.1and1.0.2. While these will typically branch from and merge into master, they may also branch from any release tag, and may not merge into master if master has already moved on to a new minor (or major) release. Both master and hotfix-* should be deployable at all times.
  2. Release branches are not currently used. All features for release merge into develop, which eventually merges into master to create a release tag.
  3. Feature branches (topic branches) are optional and should be named for the corresponding JIRA issue (eg: feature-co500). In general, feature branches are used when merging directly into develop is undesirable, perhaps because the feature is experimental. Features may also be used when a priority enhancement is made for a specific deployment, and the enhancement is required before the next scheduled minor release.
    1. Feature branches may also be used to target develop for a future (ie: not the next) feature release. In this case, the feature branch is named for the target release (eg: feature-3.1) rather than a JIRA issue.

Do not commit the same change to multiple branches. Pick the "earliest" relevant branch and commit there. For example, if you commit to hotfix-3.0.x, do not also commit to develop. Your commit will flow to develop at the next merge. This makes it easier to track where a change came from.

Under limited circumstances, it may be necessary to cherry pick a commit or otherwise violate this rule. Please discuss before doing so.


Summary

BranchDescriptionBranches FromMerges To
masterCurrent release or release candidate--
developNew features scheduled for next minor release-master, hotfix-* (if appropriate)
hotfix-*Bug fixes and minor changes scheduled for next bugfix releasemastermaster, develop
feature-*Experimental or prioritized featuresmaster for prioritized development, otherwise any suitable branchdevelop, hotfix-* (if appropriate)

 

References

  • No labels