SemVer — نسخهگذاری مخزن
Gitrabbit از Semantic Versioning (MAJOR.MINOR.PATCH) برای هر مخزن پشتیبانی میکند. bump هنگام commit انجام میشود؛ rollback فقط اشارهگر نسخه را عوض میکند و فایلها revert نمیشوند.
فعالسازی: تنظیمات مخزن → تب SemVer · مستندات CLI: grb
۱. فعالسازی
- مالک یا senior در /repos/<repoId>?repoTab=semver SemVer را فعال کند و نسخه اولیه (مثلاً 1.0.0) را تعیین کند.
- پلن Hobby: SemVer فعال با محدودیت (۱ کلید API، ۱۰۰ درخواست/روز).
- پلنهای پولی: کلید و درخواست نامحدود.
۲. Bump هنگام Commit
وقتی SemVer فعال است، هر commit باید نوع bump را مشخص کند. نسخه بلافاصله پس از commit ثبت میشود — مستقل از push.
CLI (grb)
# When SemVer is enabled on the repo, bump type is required:
grb commit -m "fix auth timeout" --semver patch
grb commit -m "add export API" --semver minor
grb commit -m "breaking API redesign" --semver major
# Interactive prompt (TTY) if --semver is omittedAPI
فیلد semverBump: patch | minor | major
curl -X POST \
-H "X-Repo-Token: <repo_token>" \
-H "Content-Type: application/json" \
-d '{"message":"fix bug","branch":"main","semverBump":"patch","incremental":true,"files":[...]}' \
https://gitrabbit.ir/api/repos/<repo_id>/commit۳. نسخه دستی (Standalone)
از پنل یا API میتوانید نسخه جدید بسازید بدون commit. نسخه باید از نسخه فعلی بزرگتر باشد.
curl -X POST \
-H "Cookie: <session_or_repo_token>" \
-H "Content-Type: application/json" \
-d '{"version":"2.0.0"}' \
https://gitrabbit.ir/api/repos/<repo_id>/versions۴. Rollback (فقط اشارهگر)
نسخه فعال به یک نسخه قبلی در تاریخچه تغییر میکند. هیچ فایلی revert یا push نمیشود — این عمداً خارج از Source Control است.
curl -X POST \
-H "Cookie: <session>" \
-H "Content-Type: application/json" \
-d '{"targetVersion":"1.8.2"}' \
https://gitrabbit.ir/api/repos/<repo_id>/versions/rollback۵. کلید API اختصاصی SemVer
- پیشوند: grb_sem_ — جدا از توکن مخزن (grb_).
- ساخت و لغو از تب SemVer در تنظیمات مخزن.
- Scope مستقل؛ revocation آسانتر از توکن CLI.
۶. API عمومی و Badge
آخرین نسخه
# Public mode — no key required (minimal response):
curl https://gitrabbit.ir/api/repos/<repo_id>/latest-version
# → {"version":"2.4.1"}
# Full details (changelog, releaseNotes, commitHash, …):
curl "https://gitrabbit.ir/api/repos/<repo_id>/latest-version?full=1"
# Spec alias path:
curl https://gitrabbit.ir/api/repositories/<repo_id>/latest-version
# Private mode — dedicated SemVer API key (grb_sem_...):
curl -H "X-Semver-Api-Key: grb_sem_..." \
https://gitrabbit.ir/api/repos/<repo_id>/latest-versionحالت public: بدون کلید (با rate limit). حالت private: header X-Semver-Api-Key یا Bearer با کلید SemVer.
Badge SVG
# SVG badge (embed in README):
۷. محدودیت پلن
| پلن | SemVer | کلید API | درخواست/روز |
|---|---|---|---|
| Hobby (رایگان) | ✓ | 1 | 100 |
| Starter و بالاتر | ✓ | ∞ | ∞ |
۸. خارج از Scope (MVP)
- Branch-based versioning
- Multi-channel (alpha / beta / rc)
- Version dependency management
- Conventional commit parsing
- CI/CD release automation
- Package registry integration
- Monorepo SemVer
۹. فهرست Endpointها
- GET/PATCH /api/repos/<repo_id>/semver
- GET/POST /api/repos/<repo_id>/versions
- POST /api/repos/<repo_id>/versions/rollback
- GET/POST /api/repos/<repo_id>/semver/api-keys
- DELETE /api/repos/<repo_id>/semver/api-keys/[keyId]
- GET /api/repos/<repo_id>/latest-version
- GET /api/repos/<repo_id>/semver/badge.svg
- POST /api/repos/<repo_id>/commit (+ semverBump)