{
  "title": "سیاست گیت",
  "slug": "team/platform/standards/git-policy",
  "url": "/docs/team/platform/standards/git-policy",
  "frontmatter": {
    "layout": "doc",
    "title": "سیاست گیت",
    "description": "فرمت کامیت، فرمت برنچ، گردش کار Pull Request و قوانین",
    "version": "1.0.0",
    "status": "PRIVATE",
    "author": "xoxxel",
    "owner": "xoxxel",
    "created_at": "2026-06-07",
    "updated_at": "2026-06-07",
    "tags": "",
    "reviewers": ""
  },
  "sections": [
    {
      "level": 1,
      "heading": "سیاست گیت",
      "content": "**Git Policy**\n\nنسخه 1.0 | الزامی برای همه مشارکت‌کنندگان\n\n---"
    },
    {
      "level": 2,
      "heading": "1. فرمت کامیت (Commit Message)",
      "content": "```\n{type}({scope}): {description}\n```"
    },
    {
      "level": 3,
      "heading": "مثال‌ها",
      "content": "```\nfeat(order): add guarantee timer with 24h default\nfix(payment): prevent double escrow release\nrefactor(chat): extract message immutability guard\ndocs(marketplace): update product versioning ADR\ntest(auth): add refresh token rotation tests\nchore(infra): add postgres helm values\nperf(search): add index on product category\n```"
    },
    {
      "level": 3,
      "heading": "انواع مجاز",
      "content": "| نوع | زمان استفاده | مثال |\n|---|---|---|\n| `feat` | ویژگی جدید | `feat(order): add dispute timeout` |\n| `fix` | رفع باگ | `fix(payment): handle null escrow amount` |\n| `refactor` | تغییر کد بدون تغییر رفتار | `refactor(auth): extract token validation` |\n| `docs` | فقط مستندات | `docs: update architecture overview` |\n| `test` | افزودن یا رفع تست | `test(order): add unit tests for state machine` |\n| `chore` | ابزارها، تنظیمات، وابستگی‌ها | `chore: update nats dependency to v1.4` |\n| `perf` | بهبود عملکرد | `perf(search): add composite index` |\n| `style` | تغییرات ظاهری کد (فرمت‌بندی) | `style: format code with prettier` |\n| `ci` | تغییر در CI/CD | `ci: add security scan step` |"
    },
    {
      "level": 3,
      "heading": "قوانین کامیت",
      "content": "| قانون | توضیح |\n|---|---|\n| scope اجباری | `{service-name}` یا `{package-name}` — مشخص کند کدام سرویس |\n| description انگلیسی | توضیح کامیت به انگلیسی |\n| description فعلی | با فعل امر: `add` نه `added`, `fix` نه `fixed` |\n| طول | حداکثر ۷۲ کاراکتر برای خط اول |\n| بدنه (body) | در صورت نیاز، بعد از یک خط خالی — توضیحات بیشتر |\n\n---"
    },
    {
      "level": 2,
      "heading": "2. فرمت برنچ (Branch)",
      "content": "```\n{type}/{service}/{short-description}\n```"
    },
    {
      "level": 3,
      "heading": "مثال‌ها",
      "content": "```\nfeature/order/guarantee-timer\nfeature/auth/social-login\nfix/payment/double-escrow-release\nchore/update-dependencies\ndocs/architecture-overview\n```"
    },
    {
      "level": 3,
      "heading": "انواع برنچ",
      "content": "| نوع | مثال |\n|---|---|\n| `feature/` | `feature/order/dispute-resolution` |\n| `fix/` | `fix/payment/null-pointer-escrow` |\n| `chore/` | `chore/update-helm-values` |\n| `docs/` | `docs/api-response-format` |\n| `refactor/` | `refactor/auth/extract-middleware` |\n| `perf/` | `perf/search/add-index` |\n\n---"
    },
    {
      "level": 2,
      "heading": "3. گردش کار (Workflow)",
      "content": "```mermaid\nflowchart LR\n    A[main] --> B[ایجاد برنچ از main]\n    B --> C[توسعه + کامیت]\n    C --> D[Push برنچ]\n    D --> E[ایجاد Pull Request]\n    E --> F[Review]\n    F --> G{Squash Merge به main}\n    G --> H[حذف برنچ]\n```"
    },
    {
      "level": 3,
      "heading": "قوانین",
      "content": "| قانون | توضیح |\n|---|---|\n| **برنچ از `main` ایجاد شود** | بدون برنچ‌های طولانی مدت (long-lived) |\n| **هر PR یک موضوع** | یک feature، یک fix، یک موضوع |\n| **عنوان PR = فرمت کامیت** | عنوان PR باید همان فرمت کامیت را دنبال کند |\n| **Squash merge به main** | همه کامیت‌های برنچ در یک کامیت merge می‌شوند |\n| **حذف برنچ پس از merge** | برنچ‌های remote پس از merge حذف شوند |\n\n---"
    },
    {
      "level": 2,
      "heading": "4. Pull Request",
      "content": ""
    },
    {
      "level": 3,
      "heading": "عنوان PR",
      "content": "```\n{type}({scope}): {description}\n```\n\nهمان فرمت کامیت — مثال: `feat(order): add guarantee timer`"
    },
    {
      "level": 3,
      "heading": "تنبلیت PR",
      "content": "| بخش | توضیح |\n|---|---|\n| توضیحات | خلاصه تغییرات + انگیزه |\n| نوع تغییر | feature, fix, refactor, docs, ... |\n| لینک به issue | در صورت وجود |\n| چک‌لیست DoD | مطابق Definition of Done |\n| لینک به دمو | در صورت تغییر UI |\n\n---"
    },
    {
      "level": 2,
      "heading": "5. خطاهای رایج",
      "content": "| ❌ غلط | ✅ درست |\n|---|---|\n| `fixed bug in payment` | `fix(payment): prevent double escrow release` |\n| `create-order-service` (برنچ) | `feature/order/create-service` |\n| `Added new feature` | `feat(order): add new feature` |\n| `main` ← مستقیم کامیت | همیشه از برنچ + PR استفاده کنید |\n| برنچ ۲ ماهه | برنچ کوتاه مدت — حداکثر چند روز |\n\n---"
    },
    {
      "level": 2,
      "heading": "خلاصه",
      "content": "| مورد | فرمت | مثال |\n|---|---|---|\n| کامیت | `{type}({scope}): {description}` | `feat(order): add guarantee timer` |\n| برنچ | `{type}/{service}/{description}` | `feature/order/guarantee-timer` |\n| PR | همان فرمت کامیت | `feat(order): add guarantee timer` |\n| merge | Squash | همه کامیت‌ها در یک کامیت |"
    }
  ]
}