راهنمای مهاجرت

نمای کلی

گیتی‌یار از مهاجرت مخازن از GitHub، GitLab، Gogs، Gitea و هر مخزن Git دیگری از طریق URL پشتیبانی می‌کند.

روش‌های مهاجرت

۱. مهاجرت از طریق رابط وب

مراحل

  1. روی "+""مهاجرت جدید" کلیک کنید
  2. منبع را انتخاب کنید:
    • GitHub
    • GitLab
    • Gogs
    • Gitea
    • مخزن Git دیگر
  3. URL مخزن را وارد کنید:
    • GitHub: https://github.com/user/repo.git
    • GitLab: https://gitlab.com/user/repo.git
    • دیگر: هر URL گیت
  4. احراز هویت (در صورت نیاز):
    • نام کاربری/رمز عبور
    • توکن دسترسی
  5. مهاجرت را پیکربندی کنید:
    • نام مخزن: لغو نام (اختیاری)
    • توضیحات: لغو توضیحات (اختیاری)
    • خصوصی: تنظیم قابلیت مشاهده
    • آینه: ایجاد مخزن آینه‌ای
  6. روی "مهاجرت مخزن" کلیک کنید

۲. مهاجرت از طریق خط فرمان

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

استفاده از توکن دسترسی شخصی

  1. تولید توکن در GitHub:
    • به SettingsDeveloper settingsPersonal access tokens بروید
    • توکن با scope repo ایجاد کنید
  2. در مهاجرت گیتی‌یار:
    • URL: https://github.com/user/repo
    • احراز هویت: از توکن به عنوان رمز عبور استفاده کنید

GitHub Enterprise

https://github-enterprise.example.com/user/repo

مهاجرت از GitLab

استفاده از توکن دسترسی شخصی

  1. تولید توکن در GitLab:
    • به User SettingsAccess Tokens بروید
    • توکن با scope های read_api و read_repository ایجاد کنید
  2. در مهاجرت گیتی‌یار:
    • 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

استفاده از مهاجرت آینه‌ای

برای مخازن بزرگ:

  1. ایجاد مخزن آینه‌ای
  2. sync در پس‌زمینه اتفاق می‌افتد
  3. پیشرفت را در تنظیمات مخزن مانیتور کنید

جایگزین خط فرمان

برای مخازن بسیار بزرگ، از خط فرمان استفاده کنید:

# 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 ها حاضرند
  • تأیید وجود tag ها
  • بازبینی تاریخچه commit
  • تست clone مخزن
  • بررسی محتوای فایل‌ها
  • بازبینی مسائل (اگر مهاجرت شده)
  • تأیید ویکی (اگر مهاجرت شده)

پیکربندی مخزن

  1. به‌روزرسانی تنظیمات مخزن
  2. افزودن همکاران
  3. پیکربندی وب‌هوک‌ها
  4. تنظیم محافظت branch
  5. فعال/غیرفعال کردن ویژگی‌ها

عیب‌یابی

مسائل رایج

احراز هویت ناموفق:

  • اعتبارنامه‌ها را تأیید کنید
  • بررسی کنید مجوزهای توکن
  • اطمینان حاصل کنید URL صحیح است

مخزن یافت نشد:

  • بررسی کنید مخزن وجود دارد
  • تأیید کنید دسترسی دارید
  • تأیید فرمت URL

Timeout مهاجرت:

  • افزایش timeout در app.ini
  • استفاده از مهاجرت آینه‌ای
  • امتحان روش خط فرمان

مهاجرت ناقص:

  • بررسی log ها برای خطاها
  • تأیید مخزن منبع
  • تلاش مجدد مهاجرت

فایل‌های بزرگ مفقود:

  • نصب Git LFS روی منبع
  • فعال‌سازی LFS در گیتی‌یار
  • استفاده از git lfs migrate

بررسی Log های مهاجرت

مشاهده log ها در:

log/gityar.log

به دنبال خطاهای مربوط به مهاجرت باشید.

آینه‌ای (Mirroring)

ایجاد آینه

در طول مهاجرت، گزینه "آینه" را انتخاب کنید.

ویژگی‌های مخزن آینه‌ای

  • Sync یک‌طرفه از منبع
  • به‌روزرسانی‌های خودکار
  • فقط خواندنی در گیتی‌یار
  • فقط Pull از منبع

به‌روزرسانی آینه

به‌روزرسانی دستی:

  1. به تنظیمات مخزن بروید
  2. روی دکمه "Sync" کلیک کنید

Sync خودکار:

پیکربندی در app.ini:

[repository]
PULL_REQUEST_COMMITS = true
DISABLED_REPO_UNITS = 

تبدیل آینه به معمولی

  1. به تنظیمات مخزن بروید
  2. غیرفعال کردن mirroring
  3. مخزن کاملاً قابل ویرایش می‌شود

بهترین شیوه‌ها

قبل از مهاجرت

  • ✅ پشتیبان‌گیری از مخزن منبع
  • ✅ تأیید اعتبارنامه‌های دسترسی
  • ✅ بررسی اندازه مخزن
  • ✅ بازبینی آنچه مهاجرت می‌شود
  • ✅ اطلاع‌رسانی به اعضای تیم

در طول مهاجرت

  • ✅ مانیتور پیشرفت مهاجرت
  • ✅ بررسی log ها برای خطاها
  • ✅ حذف منبع تا زمانی که تأیید نشده
  • ✅ تست clone پس از مهاجرت

پس از مهاجرت

  • ✅ تأیید مهاجرت تمام داده‌ها
  • ✅ به‌روزرسانی مستندات
  • ✅ به‌روزرسانی pipeline های CI/CD
  • ✅ به‌روزرسانی remote URL ها برای تیم
  • ✅ بایگانی یا هدایت مجدد مخزن قدیمی

مراحل بعدی