ApexStore has migrated from Gitflow (with develop, release/*, hotfix/* branches) to trunk-based development with direct merges to main.
feature/* → develop → release/* → main → manual tag + release
feature/* → main → auto version bump + tag + release
| Aspect | Old (Gitflow) | New (Trunk-Based) |
|---|---|---|
| Main branch | main (stable releases only) |
main (always deployable) |
| Development branch | develop |
❌ Removed |
| Feature branches | feature/* → develop |
feat/* / fix/* → main |
| Release process | Manual release/* branches |
✅ Automatic on merge |
| Version bumping | Manual in Cargo.toml |
✅ Auto-increment patch |
| Tagging | Manual git tag vX.Y.Z |
✅ Auto-created |
| GitHub Release | Manual creation | ✅ Auto-generated with notes |
| CI checks | Multiple workflows | 1 unified pr-validation.yml |
# Start from main (always up-to-date)
git checkout main
git pull origin main
# Create feature branch
git checkout -b feat/my-awesome-feature
# or
git checkout -b fix/critical-bug# Make changes
vim src/core/engine.rs
# Commit with conventional commits
git add .
git commit -m "feat: add caching layer to engine"
# or
git commit -m "fix: resolve memory leak in SSTable reader"
# Push to remote
git push origin feat/my-awesome-feature- Go to GitHub and open a PR from
feat/my-awesome-feature→main - CI automatically runs (
pr-validation.yml):cargo fmt --checkcargo clippy -- -D warningscargo test --all-featurescargo build --release
- Fix any CI failures
- Request code review
- Address review comments
- Once approved, click "Merge Pull Request"
- CI automatically runs (
release.yml):- Version bumps:
2.1.0→2.1.1 - Commits:
chore: bump version to 2.1.1 [skip ci] - Creates tag:
v2.1.1 - Creates GitHub Release with changelog
- Version bumps:
- Done! Your feature is released 🎉
After merging this migration PR, delete the following branches:
git push origin --delete develop # No longer used
git push origin --delete release/* # No longer used# Remove local references to deleted branches
git fetch --prune
# Delete local develop branch
git branch -D develop
# Set main as default tracking branch
git branch --set-upstream-to=origin/main mainA: The CI auto-increments patch by default. For minor/major:
# Option 1: Manually edit Cargo.toml in your PR
vim Cargo.toml
# Change: version = "2.1.0" → "2.2.0" (minor) or "3.0.0" (major)
# Option 2: Use cargo-bump (if installed)
cargo install cargo-bump
cargo bump minor # or: cargo bump majorThen open PR as usual. The CI will detect the manually set version and not override it.
A: Same as a feature:
git checkout main
git pull
git checkout -b fix/critical-security-issue
# ... make fix ...
git commit -m "fix: patch XSS vulnerability in API"
git push origin fix/critical-security-issue
# Open PR → main, merge, auto-release!A: Fix the issues locally:
# Check format
cargo fmt
# Fix clippy warnings
cargo clippy --fix --allow-dirty
# Run tests
cargo test
# Commit fixes
git add .
git commit -m "chore: fix CI issues"
git pushCI will re-run automatically.
A: Yes, but not recommended. The CI handles it better. If needed:
# Disable the release.yml workflow temporarily
# Then follow manual stepsA: All commits from develop should be merged to main before deleting it:
# If develop has unmerged commits:
git checkout main
git merge develop
git push origin main
# Then delete develop
git push origin --delete develop- Read this migration guide
- Delete local
developbranch - Update Git remote tracking:
git fetch --prune - Read
.github/workflows/README.md - Test workflow: create a small PR, merge, verify auto-release
- Update any CI/CD documentation in wikis/Notion/etc.
- Notify team of new workflow in Slack/Discord
Questions? Open an issue labeled workflow or ping @ElioNeto.
Migration Date: March 9, 2026
Migrated By: github-actions[bot] / Elio Neto