Multiple Team Source

A source code setup for repos with several teams making changes in parallel. Uses a derivative of GitFlow to provide flexible releases with each team managing their own develop branch.

Protected Code

All changes are reviewed by codeowners and involve more than 1 person. Protection rules can be adjusted to your requirements.

SemVer Support

SemVer git tags label alpha, beta and production builds. Multiple application versions can be supported independently.

Team Branch

Each team has an independent area under their direct control to integrate and test changes.

Flexible Releases

Changes can be tested and released as a batch if desired while maintaining the ability to release a hotfix at any time.

Best when several busy teams are working on the same codebase. Branching model is a derivative of GitFlow to provide each team with their own develop branch. Cross-team alignment occurs during regular releases. SemVer git tags used to label releases and trigger alpha, beta and production builds. To support multiple deployments, previous versions can continue to be patched through the use of support branches.

  • Protected Code
  • SemVer Support
  • Team Branch
  • Flexible Releases

Recommended branching model patterns explained in under 7 minutes!

Quick Start

Create a team develop branch, e.g. for a team named ppb:

git checkout main
git checkout -b ppb/develop
git push -u origin ppb/develop

Start using the branching model through git flutter shortcuts. Install this helper with:

curl -o- https://innersource.flutter.com/git-flutter/install.sh | bash

View repository status:

git flutter status

Ready to try it?

The sandbox-mt repository is a sandbox area for you to use.

Create a feature:

git flutter feature "my feature name"

To push your work and open a PR:

git flutter push -w

Create a release once the feature is merged to develop:

git flutter release "name or version"

Tag alpha (develop branch), beta (release branch) or production build (main branch):

git flutter tag

Quick Setup

Create a team develop branch for each team, e.g. to create a ppb team branch:

git checkout main
git checkout -b ppb/develop
git push -u origin ppb/develop

If you are configuring a completely new repository use the full setup guide. However for most you just need to update your branch protections in your Codebase Governor config file:

branch-protections:
  - patterns:
      - "main"
      - "master"
      - "support/*"
    parameters:
      required-reviews-count: 2
      requires-codeowner-reviews: true
      requires-status-checks: true
  - patterns:
      - "*/develop"
      - "*/release/*"
    parameters:
      required-reviews-count: 1
      requires-codeowner-reviews: true
      requires-status-checks: true
      allow-admin-bypass: true
      allow-stale-reviews: true
      allow-stale-branch-merge: true
      allows-deletions: true

If you are using tags to trigger builds use the GitHub web interface to add a tag protection rule for the v* pattern (Settings > Tags > New Rule).

Learn More

Setup