Note: This is documentation for version 5.4 of Source. For a different version of Source, select the relevant space by using the Spaces menu in the toolbar above

Branch Structure

This is a high level overview of the branching structure we use, and how work flows from one branch to another. It is based loosely on A successful Git branching model.

Basic Flow

Feature Branches (f-<JIRA issue nuumber>) Work that's more than a quick fix is done on a feature branch.

Default This is what was called 'trunk' in subversion. It's the branch that we are continuously integrating with, where nightly builds are built from etc.

Prep A short-lived place for a release to be tested and fixed before a beta is created. 

Beta (each month-ish) Where beta releases are created from. Bug-fixes for the current beta release are done here then merged back through to prep and default.

Release (every 6 months-ish) Where stable releases are created from. Bug-fixes for the current stable release are made here then merged back through to the other branches.

Reverting an Accidental Branch/Merge

Scenario: We branched for 3.8.20, so default is now 3.8.21, prep is 3.8.20. A few days later default was accidentally merge into prep, which meant changes from default (that happened after we branched for 3.8.20) were now on prep.

To revert this we did the following:

  1. Merge prep → default, so default has all the changes from prep.
  2. Update to the commit on prep just before this accidental merge commit.
  3. Merge the changes for the accidental merge commit into this current revision, with "Discard all changes from the other revision". - This creates a new head for prep creating a delete change set for the accidental merge but it also doesn't have the changes from changes made on prep since the accidental merge.
  4. Merge the latest prep into this current revision - this will bring those now missing changes into this new prep head but shouldn't bring the changes accidental merge ).
  5. Update to default and merge  prep → default, with "Discard all changes from the other revision". (default should already be up to date from Step 1)

 

Â