راهنمای مهاجرت
نمای کلی
گیتییار از مهاجرت مخازن از GitHub، GitLab، Gogs، Gitea و هر مخزن Git دیگری از طریق URL پشتیبانی میکند.
روشهای مهاجرت
۱. مهاجرت از طریق رابط وب
مراحل
- روی "+" → "مهاجرت جدید" کلیک کنید
- منبع را انتخاب کنید:
- GitHub
- GitLab
- Gogs
- Gitea
- مخزن Git دیگر
- URL مخزن را وارد کنید:
- GitHub:
https://github.com/user/repo.git
- GitLab:
https://gitlab.com/user/repo.git
- دیگر: هر URL گیت
- احراز هویت (در صورت نیاز):
- نام کاربری/رمز عبور
- توکن دسترسی
- مهاجرت را پیکربندی کنید:
- نام مخزن: لغو نام (اختیاری)
- توضیحات: لغو توضیحات (اختیاری)
- خصوصی: تنظیم قابلیت مشاهده
- آینه: ایجاد مخزن آینهای
- روی "مهاجرت مخزن" کلیک کنید
۲. مهاجرت از طریق خط فرمان
Clone از منبع
git clone --mirror https://source-git.com/user/repo.git
cd repo.git
Push به گیتییار
git push --mirror http://localhost:3000/user/repo.git
چه چیزی مهاجرت میشود
مهاجرت کامل
- ✅ تمام commit ها و branch ها
- ✅ تمام tag ها
- ✅ فایلهای مخزن
- ✅ تاریخچه commit
- ✅ مشارکتکنندگان
اختیاری (اگر توسط منبع پشتیبانی شود)
- ⚠️ مسائل
- ⚠️ درخواستهای تغییر / Merge request ها
- ⚠️ برچسبها
- ⚠️ نقاط عطف
- ⚠️ صفحات ویکی
- ⚠️ انتشارها
مهاجرت از GitHub
استفاده از توکن دسترسی شخصی
- تولید توکن در GitHub:
- به Settings → Developer settings → Personal access tokens بروید
- توکن با scope
repo ایجاد کنید
- در مهاجرت گیتییار:
- URL:
https://github.com/user/repo
- احراز هویت: از توکن به عنوان رمز عبور استفاده کنید
GitHub Enterprise
https://github-enterprise.example.com/user/repo
مهاجرت از GitLab
استفاده از توکن دسترسی شخصی
- تولید توکن در GitLab:
- به User Settings → Access Tokens بروید
- توکن با scope های
read_api و read_repository ایجاد کنید
- در مهاجرت گیتییار:
- URL:
https://gitlab.com/user/repo
- احراز هویت: از توکن به عنوان رمز عبور استفاده کنید
GitLab Self-Hosted
https://gitlab.your-company.com/user/repo
مهاجرت از Gogs/Gitea
مشابه مهاجرت GitLab:
https://gogs.example.com/user/repo.git
https://gitea.example.com/user/repo.git
مهاجرت مخازن بزرگ
افزایش محدودیتها
در app.ini:
[repository]
MAX_CREATION_LIMIT = -1 # نامحدود
[migrations]
MAX_ATTEMPTS = 3
MAX_REQUEST_SIZE = 104857600 # 100MB
استفاده از مهاجرت آینهای
برای مخازن بزرگ:
- ایجاد مخزن آینهای
- sync در پسزمینه اتفاق میافتد
- پیشرفت را در تنظیمات مخزن مانیتور کنید
جایگزین خط فرمان
برای مخازن بسیار بزرگ، از خط فرمان استفاده کنید:
# Clone با تاریخچه کمعمق
git clone --depth 100 --mirror https://source.com/repo.git
cd repo.git
# Push به گیتییار
git push --mirror http://localhost:3000/repo.git
وظایف پس از مهاجرت
بهروزرسانی Remote URL ها
git remote set-url origin http://localhost:3000/user/repo.git
git push -u origin --all
git push -u origin --tags
تأیید مهاجرت
پیکربندی مخزن
- بهروزرسانی تنظیمات مخزن
- افزودن همکاران
- پیکربندی وبهوکها
- تنظیم محافظت branch
- فعال/غیرفعال کردن ویژگیها
عیبیابی
مسائل رایج
احراز هویت ناموفق:
- اعتبارنامهها را تأیید کنید
- بررسی کنید مجوزهای توکن
- اطمینان حاصل کنید URL صحیح است
مخزن یافت نشد:
- بررسی کنید مخزن وجود دارد
- تأیید کنید دسترسی دارید
- تأیید فرمت URL
Timeout مهاجرت:
- افزایش timeout در
app.ini
- استفاده از مهاجرت آینهای
- امتحان روش خط فرمان
مهاجرت ناقص:
- بررسی log ها برای خطاها
- تأیید مخزن منبع
- تلاش مجدد مهاجرت
فایلهای بزرگ مفقود:
- نصب Git LFS روی منبع
- فعالسازی LFS در گیتییار
- استفاده از
git lfs migrate
بررسی Log های مهاجرت
مشاهده log ها در:
log/gityar.log
به دنبال خطاهای مربوط به مهاجرت باشید.
آینهای (Mirroring)
ایجاد آینه
در طول مهاجرت، گزینه "آینه" را انتخاب کنید.
ویژگیهای مخزن آینهای
- Sync یکطرفه از منبع
- بهروزرسانیهای خودکار
- فقط خواندنی در گیتییار
- فقط Pull از منبع
بهروزرسانی آینه
بهروزرسانی دستی:
- به تنظیمات مخزن بروید
- روی دکمه "Sync" کلیک کنید
Sync خودکار:
پیکربندی در app.ini:
[repository]
PULL_REQUEST_COMMITS = true
DISABLED_REPO_UNITS =
تبدیل آینه به معمولی
- به تنظیمات مخزن بروید
- غیرفعال کردن mirroring
- مخزن کاملاً قابل ویرایش میشود
بهترین شیوهها
قبل از مهاجرت
- ✅ پشتیبانگیری از مخزن منبع
- ✅ تأیید اعتبارنامههای دسترسی
- ✅ بررسی اندازه مخزن
- ✅ بازبینی آنچه مهاجرت میشود
- ✅ اطلاعرسانی به اعضای تیم
در طول مهاجرت
- ✅ مانیتور پیشرفت مهاجرت
- ✅ بررسی log ها برای خطاها
- ✅ حذف منبع تا زمانی که تأیید نشده
- ✅ تست clone پس از مهاجرت
پس از مهاجرت
- ✅ تأیید مهاجرت تمام دادهها
- ✅ بهروزرسانی مستندات
- ✅ بهروزرسانی pipeline های CI/CD
- ✅ بهروزرسانی remote URL ها برای تیم
- ✅ بایگانی یا هدایت مجدد مخزن قدیمی
مراحل بعدی