Team workflow

MetaCroc logo

Team workflow #

A reference process for parallel teams built on the implemented features: branches, protected branches, merge requests, rebase, cherry-pick, and branch-bound deployment packages. Adapt branch names to your tenant.

Branch layout #

flowchart TB mainNode["main / PROD"] preprod["preprod / PREPROD"] devA["dev-a / DEV-A"] devB["dev-b / DEV-B"] featA1["feature/A-1"] featB1["feature/B-1"] hotfix["hotfix/..."] mainNode --> preprod preprod --> devA preprod --> devB devA --> featA1 devB --> featB1 mainNode --> hotfix

Recommended setup:

  • Mark main, preprod, and dev-* as protected so they change only through merge requests.
  • Set Required approvals per branch, for example 1 on dev-* (team lead), 2 on preprod and main.
  • Keep feature and hotfix branches unprotected so developers can edit and push directly.

Happy path #

  1. Create feature/... from dev-a.
  2. Select the feature branch in the project tree, edit and push.
  3. Before opening an MR, Rebase from parent to pick up recent changes on dev-a and resolve conflicts locally.
  4. Create MR feature → dev-a; the team lead reviews and approves; click Merge.
  5. Update deployment package on dev-a and deploy it to DEV-A.
  6. Create MR dev-a → preprod; the release manager resolves cross-team conflicts and approves; Merge; deploy PREPROD.
  7. Other teams absorb the changes with an MR preprod → dev-b (protected branches cannot be rebased); their unprotected feature branches can then use Rebase from parent.
  8. Create MR preprod → main; approve; Merge; deploy PROD.

Conflict ownership #

MergeTypical resolver
Feature → dev-XTeam lead
Forward merge preprod → dev-X (MR)Team lead
dev-X → preprodRelease manager
preprod → mainRelease manager

Protected branches cannot be rebased. To bring parent changes into a protected branch, create a merge request from the parent into it.

Hotfix #

  1. Create hotfix/... from main.
  2. Fix and push on the hotfix branch.
  3. MR hotfix → main, approve, merge, deploy PROD.
  4. MRs main → preprod and preprod → dev-* so the fix reaches ongoing development; unprotected feature branches then rebase from their parent.

Moving selected elements #

Use Cherry-pick on an unprotected branch to take individual elements from another branch, for example to reuse a finished table from a sibling feature without merging the whole feature.

Limits to plan for #

  • Merge is always a manual click after approval.
  • Merge requests are not marked stale automatically when branches move; re-check the diff before merging.
  • Environments are not linked to branches; deployment is done through packages.