Documentation / Branches
شاخهها در Gitrabbit
هر مخزن یک شاخهٔ پیشفرض سمت سرور دارد (main). کامیتها روی یک شاخهٔ نامگذاریشده ذخیره میشوند؛ برای شاخههای غیر main ابتدا باید شاخه در سرور ثبت شود، بعد روی همان نام commit و push کنید. رفتار شبیه GitHub است (بدون merge خودکار بین شاخهها در این نسخه).
پیشنیاز دستور CLI: راهنمای grb · فایلهای محلی: config و sync.
۱ — مفاهیم پایه
- main: شاخهٔ اصلی ضمنی است؛ تمام کامیتهای تاریخی که پیش از این ویژگی ساخته شدهاند پس از بهروزرسانی سرور بهصورت خودکار مانند همین شاخه در نظر گرفته میشوند (بدون قطع دسترسی یا از دست رفتن تاریخچه).
- تایملاین خطی: هر شاخهٔ ثبتشده یک نقطهٔ انشعاب از یک شاخهٔ مبدأ و یک کامیت نوک مبدأ (در لحظهٔ ساخت) دارد؛ سپس کامیتهایی که خودش برچسب آن شاخه را دارند، به انتهای همان تاریخچه اضافه میشوند.
- شاخهٔ پیشفرض مخزن: در مدل Repository فیلدی برای ترجیح شاخه هنگامی که درخواستی بدون پارامتر branch بیاید وجود دارد؛ معمولاً main است.
۲ — گردش کار پیشنهادی
- برای کار روی main: همان دستورهای همیشگی pull / commit / push ؛ در grb init میتوانید --branch main بگذارید یا نیاز نیست چون پیشفرض همین است.
- برای یک شاخهٔ جدید مثلاً feat-x: ابتدا grb branch create feat-x --from main (یا فرم وب داخل مخزن).
- در همان مخزن روی دستگاه، مقدار "branch" را در .irangit/config.json برابر همان نام قرار دهید؛ سپس pull تا sync.json با همان تایملاین همتراز شود (در غیر این صورت گرَب هشدار همنام نبودن شاخهٔ sync با config نشان میدهد).
- commit و push تنها برای کامیتهای همان نام شاخه روی خط قرار میگیرند؛ push همهٔ کامیتهای pending فقط برای شاخهٔ فعلی config است نه مخزن کامل.
۳ — گرَب (CLI)
# شاخهٔ پیشفرض محلی را هنگام init مشخص کنید
grb init --url https://gitrabbit.ir --repo <repoId> --token <token> --branch main
# ثبت شاخه جدید روی سرور (قبل از اولین commit روی آن نام)
grb branch create my-feature --from main
# ویرایش .irangit/config.json پس از create:
# "branch": "my-feature"در هر درخواست، گرَب سربرگ X-GRB-Branch و در صورت نیاز پارامتر query ?branch= را نیز میفرستاد؛ مقدار از همان فیلد branch در پیکربندی خوانده میشود.
۴ — نقاط پایانهٔ REST (خلاصه)
۴.۱ — فهرست و ایجاد
# فهرست شاخهها + پیشفرض مخزن
curl -sS -H "X-Repo-Token: <token>" \
"https://gitrabbit.ir/api/repos/<repoId>/branches"curl -sS -X POST \
-H "X-Repo-Token: <token>" \
-H "Content-Type: application/json" \
-d '{"name":"feat-auth","from":"main"}' \
"https://gitrabbit.ir/api/repos/<repoId>/branches"۴.۲ — اعمال همان نام در بقیهٔ مسیرها
برای pull، دانلود ZIP، ثبت commit و push هم میتوانید از پارامتر ?branch=name استفاده کنید و هم سربرگ X-GRB-Branch: nameرا بفرستید. بدون آنها، سرور از شاخهٔ پیشفرض همان مخزن استفاده میکند.
۵ — رابط وب
در صفحهٔ جزئیات هر مخزن و در صفحهٔ «فایلها» با برچسبهای کنار عنوان میتوانید بین شاخهها جابهجا شوید (نشانی با ?branch=). تاریخچهٔ کامیت و درخت منتشرشده برای همان شاخه نمایش داده میشود. اگر مجوز دارید فرم ایجاد شاخه هم در همان صفحه وجود دارد.
۶ — مهاجرت مخازن قدیمی
با اولین اتصال موفق برنامه به دیتابیس، بهروزرسانی دستهای اجرا میشود تا روی هر کامیت بدون برچسب شاخه مقدار branch: "main" ست شود و روی هر مخزن بدون پیشفرض، defaultBranch: "main" نوشته شود. نیازی نیست دستی دادهٔ قدیمی را جابهجا کنید؛ لینکهای قبلی وب و کلاینتهایی که فقط با main کار میکنند همچنان همان تاریخچه را میبینند.