Open-source software for Joomla, Gitea, and web platforms. Home of MokoSuite, MokoGitea, and MokoCLI.
Tennessee
contributing/branching-strategy.-
Branching Strategy
Branch model for all MokoConsulting repositories.
Branch Types
main
- Stable release branch — always deployable
- Protected: no direct pushes, PR-only merges
- Tags created from main for releases (e.g.,
v1.0.0) - All CI checks must pass before merge
dev/{description}
- Feature and fix branches — all development work happens here
- Created from
main - Uses the
dev/prefix with a descriptive name:
dev/add-s3-uploader
dev/fix-backup-permissions
dev/update-cross-post-queue
dev/refactor-engine-steps
- Deleted after merge to main
Workflow
main ──────────────────────────────────────────────── main
│ ▲
└──── dev/add-feature ────── PR ────── squash merge ──┘
-
Create branch from latest
main:git checkout main git pull origin main git checkout -b dev/my-feature -
Develop on the branch with meaningful commits
-
Push and create a PR:
git push -u origin dev/my-feature -
Review — at least one maintainer approval, CI must pass
-
Merge — squash merge preferred for feature branches
-
Clean up — branch is deleted after merge (auto-delete enabled)
Rules
- Never force-push to
main - Never commit directly to
main— always use PRs - Keep branches short-lived — merge within days, not weeks
- Rebase on
mainif your branch falls behind (or merge main into your branch) - One logical change per branch — don't bundle unrelated work
Tags
Release tags follow semantic versioning:
v1.0.0 # Major release
v1.1.0 # Minor feature release
v1.1.1 # Patch/bugfix release
Tags are created from main only, either manually or by CI on release.
Hotfixes
For urgent production fixes:
- Create
dev/hotfix-{description}frommain - Fix the issue with minimal changes
- PR with expedited review
- Merge and tag immediately
Pages