Skip to content

Explanation of Git Branches

Tim Cortesi edited this page Jun 22, 2021 · 8 revisions

Overview

Graphene development/deployment makes use of a number of different branches with different levels of stability. Depending on your use case, you may wish to utilize one or more of the different branches outlined below.

Graphene Branches

unstable

The binghamton-staging branch is made up of code commits which Binghamton University is actively testing for deployment in the near future. This branch is often unstable, as it contains bleeding edge features, untested patches, upgrades, and other commits. Once the binghamton-staging branch reaches a significant level of maturity (through developer QA testing), the code is merged into the binghamton-prod-actual branch. There is no established time period for moving from binghamton-staging to binghamton-prod-actual, but we generally like to keep binghamton-staging no more than ~30 days behind the binghamton-prod-actual branch.

stable

The binghamton-prod-actual branch contains code which is actively running in a production environment, and serves as the backbone for Binghamton University's my.binghamton.edu portal. This branch is largely stable, though it may contain a few unexpected bugs which were not discovered during testing in the binghamton-staging branch. If critical bugs are found in the binghamton-staging branch, they may be fixed within 24-48 hours of being discovered, and committed directly into the binghamton-prod-actual branch, skipping the binghamton-staging branch.

stable

The master branch sits about 2 weeks behind the binghamton-prod-actual branch, and is the most stable of all the branches. Bugs are typically discovered in the binghamton-prod-actual branch within the first 2 weeks of being deployed to my.binghamton.edu, so the binghamton-prod-actual branch includes code which has been tested by developers, followed by 2 weeks of real-world testing by a campus of ~20,000 end users. If bugs are found in the master branch, depending on severity and complexity, patches will be committed into the binghamton-staging or binghamton-prod-actual branches. No bug fixes are ever committed directly into the master branch without first being tested in one (or both) of the binghamton-* branches.

All Other Branches

experimental

Graphene often utilizes other "feature" branches for developing new features. As these features are ready for testing, they are merged into the binghamton-staging branch. Outside of active development or testing, there should never be a reason to checkout one of these feature branches.