Documentation / Files · GRB local layout
فایلهای مرتبط با گرَب (GRB) در پروژهٔ شما
این صفحه فقط آن چیزی را توضیح میدهد که روی سیستم توسعهدهنده و داخل مخزنتان دیده میشود. برای دستورها، مستند خط فرمان؛ برای مفهوم شاخه و API، شاخهها را ببینید.
خلاصهٔ فهرست
| نام | محل | کاربرد |
|---|---|---|
| .grbignore | ریشهٔ پروژه | کنار زدن پوشه/فایل از اسکن پیش از commit؛ شبیه .gitignore اما مخصوص گرَب. |
| .irangit/config.json | داخل پوشهٔ مخفی .irangit/ | شامل url، repo، token و معمولاً branch (پیشفرض main). |
| .irangit/sync.json | همان پوشه | پس از pull یا push موفق بازنویسی میشود؛ فیلد manifest هش هر فایل آن شاخه روی سرور است و فیلد branch مشخص میکند این manifest متعلق به کدام تایملاین است (با مقایسه به config.branch هشدار داده میشود). |
| ~/.local/bin/grb … | سیستم (خارج از مخزنه) | لانچِری که با اسکریپت رسمی روی دستگاه قرار میگیرد؛ داخل مخزنهٔ Git شما نیست. روی ویندوز مسیر پیشفرض معمولاً زیرپوشهای از پروفایل کاربر است (همان ابزار نصبی PowerShell نشان میدهد). |
۱ — فایل .grbignore
در ریشهٔ پروژه قرار دهید؛ اگر نباشد گرَب فقط از مجموعهٔ نادیدهگرفتههای داخلی خودش (مانند node_modules، پوشههای نقطهشروع مانند .next و جز آن) استفاده میکند. هر خط بیانگر یک الگو است؛ کامنت با #؛ الگویی که با اسلش شروع میشود به ریشه محدود میشود؛ ستارهٔ ساده داخل هر بخش مسیر مانند یک glob سبک عمل میکند. مسیرهایی که نادیده گرفته شوند در همان نسخهٔ commit حضور پیدا نمیکنند؛ حجم شبکه کمتر میشود و ریسک ارسال اشتباهی فایلهای حساس کمتر میگردد.
# هر خط یک الگوی ساده مانند gitignore؛ با # کامنت
node_modules/
.next/
.env
.env.*
# فقط در ریشه مثلاً:
# /dist/۲ — پوشهٔ .irangit/ (پیکربندی و همگامی)
محتوای JSON را دستکاری کنید تنها وقتی میدانید دارید چه کار میکنید؛ هرگز توکن یک مخزن را در انبار عمومی اشتراک نگذارید. نسخههای قبلی گرَب گاه دو فایل در ریشه مینوشت؛ نسخهٔ فعلی فقط همین زیرپوشه را نگه میدارد وسط اسکن هر چه در دل پوشههای نقطهدار است پیشفرضاً از commit خارج میشود ولی باز هم پیشنهاد میشود .irangit/را در Git خود مخزنه ignore کنید تا هیچ commitای حتی تاریخچه را هم با توکن آغشته نکند.
۲.۱ — config.json
ساخت اولیه زمانی پیش میآید که grb init … را بزنید؛ سه کلید اصلی اجبار دارند؛ چهارمین کلید پیشنهادی برای شاخه است:
- url — ریشهٔ سایت API (معمولاً production).
- repo — شناسهٔ عیناً همانطور که از داشبورد کپی میکنید.
- token — رشتهٔ سری که گرَب روی هر درخواست در هدر مخزنی میگذارد.
- branch — نام شاخهٔ فعلی روی دستگاه؛ اگر نباشد گرَب هنگام اجرای بعدی آن را با main پر میکند تا با سرور همخط بماند.
{
"url": "https://gitrabbit.ir",
"repo": "_شناسه_مخزن_از_داشبورد_",
"token": "رمز دسترسی کامل مخزنی که خودتان با آن init کردهاید",
"branch": "main"
}۲.۲ — sync.json
هر بار گرَب از سرور وضعیتی رسمی برای آخرین کامیت pushشده بگیرد، این شیء بازنویسی میشود؛ قلب آن فیلد manifest است؛ یعنی نگاشت "مسیر" -> "هش خام محتوای همان مسیر آن لحظه روی سرور" تا commit بعد فقط خطوط واقعاً عوضشده کشیده بیرون بیایند. اگر فایل حذف شود گرَب دوباره مثل اولین بار همهٔ آنچه نیاز باشد تا صحت تأمین گردد ارسال میکند (حجم شبکهٔ بزرگتر). حذفش عمداً فقط وقت عیبیابی جدی توصیه میشود؛ معمولاً بهتر است بعدش همانگاه pull بزنید تا manifest واقعی جایگیرد. اگر نام شاخه را در config.json عوض کردهاید، بهتر است یکبار sync.json قدیمی را پاک کنید و دوباره pull بزنید تا با تایملاین جدید همتراز شود.
{
"headCommitId": "...",
"headHash": "......",
"branch": "main",
"manifest": {
"path/to/file.txt": "sha256_HEX_برای محتوای دقیق فایل آن لحظه روی سرور"
},
"updatedAt": "ISO-..."
}۳ — رابط تو با Git شخصیٔ خودت (.gitignore روی مخزنه)
مخزنهٔ شخصیٔ شما نزد Gitrabbit محرمانده است؛ فقط این پیشنهاد امنیتی را جدی بگیرید: پوشهٔ زیر هرگز وارد تاریخچهٔ Git عمومی نشود.
# در ریشهٔ همین مخزن گیت؛ این خط را هرگز commit نکنید:
.irangit/سوالات تکراری
- چرا همهٔ چیز یکجا زیر .irangit است؟
- برای اینکه توکن و manifest هر پروژه فقط آنجا جمع شود؛ اگر کل پوشه را پاک کنید باید دوباره با init بازسازی کنید.
- برای هر زیرپروژه باید grb را جدا init کرد؟
- برای هر پروژهای که جداگانه یک توکن گرَب دارد و از ریشهٔ خودش آپلود میشود یک بار جدا؛ پوشهای را که گرَب باید بخواند باید پوشهٔ فعلیِ ترمینال همان باشد؛ زیرمسیر مستقل هر کدام پیکربندی و init جدا لازم دارد، مگر دستی ادغامشان کنید.