Skip to content

Repo management and Releasing

zzolo edited this page Aug 16, 2011 · 6 revisions

The following is the (proposed, but yet implemented) model for our git-based repository management (branching and tagging). Overall the goal is to follow the model laid out by Vincent Driessen's post on a git branching model at nvie.com. Please refer to that post for more details and commands on the process.

Git Flow

Git Flow will help in maintaining the management style described here.

Initializing

  1. git flow init
    • Given the information below, make sure to choose master-cfa and develop-cfa respectively.

Persistent Main Branches

The following are the main branches of the application. Note because this code is influx with LP's NYS project, this is a bit off for now.

  • master-cfa: This is main branch that holds the production-ready code. Code from the develop branch should be merged into this branch when ready to be tagged as a release.
  • develop-cfa: This is the branch where all stable development code gets merged into. This can be thought of as the staging branch.

Supporting Branches

  • Feature branches: Each new feature should be managed in its own branch. When tested and ready, the branch should be merged into the develop branch.
    • Branch from develop.
    • Merge back to develop.
    • Naming: anything besides other naming.
  • Release branches: Release branches support preparation of a new production release. This is for some final fixes and allows for development for next release to proceed more smoothly.
    • Branch from develop.
    • Merge back to develop and master.
    • Naming: release-*
  • Hotfix branches: For emergency fixes to released code.
    • Branch from master.
    • Merge back to develop and master
    • Naming: hotfix-*

Creating a Release

After having developed and tested enough features for a release, use the following to create a release.

  1. Determine release number. Currently something like 2.0.X.
  2. Create new release branch: git flow release start 2.0.x.
  3. Run build: ./scripts/build.sh (see Build process)
  4. Update the following, following conventions already started:
    • CHANGELOG.txt
    • UPGRADE.txt
    • INSTALL.txt
    • README.txt
  5. Test!
  6. Finish and merge branch: git flow release finish 2.0.X
    • This will merge changes into master-cfa and develop-cfa and create tag at 2.0.X.