كيفية تحريك مستودعات GIT وتقليل وقت التوقف

StackOverflow https://stackoverflow.com/questions/3601242

  •  25-09-2019
  •  | 
  •  

سؤال

سوف أقوم بنقل مستودعات GIT من خادم SCM الأقدم إلى خادم جديد. قلقي الرئيسي (بخلاف الإخلاص ، بالطبع) هو تقليل وقت التوقف. ها هي خطتي:

  1. على الجهاز الجديد ، استنساخ كل مستودع باستخدام git clone --mirror
  2. انسخ فوق السنانير ريبو لكل مستودع
  3. عدم السماح بالوصول إلى الخادم القديم (نستخدم الوزن ، لذا أزل الوصول لجميع المستخدمين باستثناء الخادم الجديد)
  4. انقل إدخال DNS حتى يستخدم مستخدمو GIT DNS
  5. نفذ git pull لكل مستودع على الخادم الجديد.
  6. لكل مستودع على الخادم الجديد ، قم بتحرير ملف التكوين لإزالة remote "origin" الجزء.
  7. قم بتشغيل الوصول إلى خادم جديد

أسئلة:

  1. هل هذا يبدو صحيحا؟ أنا مهتم على وجه التحديد بالخطوة رقم 6.
  2. هل هناك أي طريقة للقيام بذلك من شأنه أن يقلل من وقت التوقف؟

شكرًا.

هل كانت مفيدة؟

المحلول

أود (إذا لم يكن هناك اتصال ممكن بين الخادم القديم والخادم الجديد):

  • حزمة كل ريبو استخدام git bundle
  • انسخ الحزمة على الخادم الجديد
  • إنشاء repos العارية
  • git fetch من تلك الحزم في كل من الريبو العاري الفارغ (لا يوجد أصل)
  • نسخ تحوم الخطافات
  • عدم السماح بالوصول إلى الخادم القديم
  • اصنع حزمة Git الأخيرة على كل ريبو (حزمة تزايدي ، سريعة جدًا)
  • انسخ تلك الحزم الصغيرة
  • git fetch الزيادة من الحزم التدريجية الصغيرة
    u003C/ downtime: no origin to remove>
  • استعادة الوصول

إذا كان هناك اتصال ممكن (من خلال SSL) بين الخادم الجديد والقديم:

  • سأقوم بإنشاء مستخدم خاص "ترحيل" ، مع الوصول إلى جميع المشاريع
  • clone --bare كل مشاريع على الخادم الجديد
  • نسخ تحوم الخطافات
  • عدم السماح بالوصول إلى الخادم القديم
  • اجعل آخر git fetch على كل ريبو مستنسخ
  • إزالة الأصلu003C/ downtime>
  • استعادة الوصول
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top