Git Workflow
Branches
main — production-ready, auto-deploys on tag
develop — integration branch, auto-deploys to staging
feature/{slug} — one feature per branch, MR to develop
fix/{slug} — bugfix branch, MR to develop
hotfix/{slug} — urgent fix, MR directly to main
Commit Convention
feat(module): short description — new feature
fix(module): short description — bug fix
refactor(module): short description — code restructure, no behavior change
test(module): short description — add or update tests
docs(module): short description — documentation
chore: short description — tooling, CI, dependencies
perf(module): short description — performance improvement
Examples
feat(groups): add Group aggregate with hierarchy support
fix(events): correct RRULE timezone handling for recurring events
refactor(people): extract MemberProfile to value object
test(news): add integration tests for multi-level feed
docs: update EVENT_CATALOG with group events
chore: upgrade Symfony to 8.0
MR Process
- Create feature branch from develop
- Implement, test, self-review
- Ensure
make ci passes locally
- Open MR to develop with clear description
- Link related issues and ADRs
- Wait for CI + human review
- Squash merge to develop
Rules
- Never push directly to main or develop
- Every MR requires CI pass
- MRs to main require human approval
- Keep MRs focused — one feature/fix per MR
- Commit incrementally (not one giant commit)