Sparrow
is essentially a Monorepo
consisting of the following folder structure -
docs
- Stores all of the documention like Project Specs, User Manual and Dev Docs.slib
- All of the code lives here, it's just an abbrevation forSparrow Lib
. To see the repo details click here.
-
Main Branches:
main
: Contains production-ready code.dev
: Integrates features for the next release.
-
Supporting Branches:
feature/*
: Used to develop new features.release/*
: Prepares a new production release.hotfix/*
: Fixes bugs in the production code.
- New features are developed in
feature/*
branches. - Features are merged into
dev
when ready. - When a
release
is ready, arelease/*
branch is created fromdev
. - Once the
release
is stable, it's merged intomain
andtagged
. - Hotfixes are made in
hotfix/*
branches frommain
and then merged back into bothmain
anddev
.
- Use short but descriptive names to convery the purpose of branch.
- Use
lowercase
alphabets to avoid any case sensitivity issues. - Use
hypens
to seperate words for readability.
For feature/*
branch, try to start with a verb followed by the object, examples -
feature/add-user-authentication
feature/add-new-report
feature/user-notifications-system
feature/login
feature/fix-email-notification
- If there is a ticket associated,
feature/apr-12345-add-support-tools
For release/*
branch, use semantic versioning (MAJOR.MINOR.PATCH) to indicate the release version.
Include descriptive tags if the release has a specific focus or milestone, examples -
release/v1.0.0-beta
release/v2.1.0-rc1
release/v1.0.0-stable
release/v2.1.0-qa
- Use dates to indicate planned release -
release/2024-07-30
,release/2024-07-30-v0.1.0-test
For hotfix/*
branch, use descriptive names which conveys the purpose of hotfix.
hotfix/apr-1234-reaccom-engine-failing
hotfix/v1.3.10-patch
hotfix/fix-notifications-download