كيفية تحريك مستودعات GIT وتقليل وقت التوقف
سؤال
سوف أقوم بنقل مستودعات GIT من خادم SCM الأقدم إلى خادم جديد. قلقي الرئيسي (بخلاف الإخلاص ، بالطبع) هو تقليل وقت التوقف. ها هي خطتي:
- على الجهاز الجديد ، استنساخ كل مستودع باستخدام
git clone --mirror
- انسخ فوق السنانير ريبو لكل مستودع
- عدم السماح بالوصول إلى الخادم القديم (نستخدم الوزن ، لذا أزل الوصول لجميع المستخدمين باستثناء الخادم الجديد)
- انقل إدخال DNS حتى يستخدم مستخدمو GIT DNS
- نفذ
git pull
لكل مستودع على الخادم الجديد. - لكل مستودع على الخادم الجديد ، قم بتحرير ملف التكوين لإزالة
remote "origin"
الجزء. - قم بتشغيل الوصول إلى خادم جديد
أسئلة:
- هل هذا يبدو صحيحا؟ أنا مهتم على وجه التحديد بالخطوة رقم 6.
- هل هناك أي طريقة للقيام بذلك من شأنه أن يقلل من وقت التوقف؟
شكرًا.
المحلول
أود (إذا لم يكن هناك اتصال ممكن بين الخادم القديم والخادم الجديد):
- حزمة كل ريبو استخدام
git bundle
- انسخ الحزمة على الخادم الجديد
- إنشاء repos العارية
git fetch
من تلك الحزم في كل من الريبو العاري الفارغ (لا يوجد أصل)- نسخ تحوم الخطافات
- عدم السماح بالوصول إلى الخادم القديم
- اصنع حزمة Git الأخيرة على كل ريبو (حزمة تزايدي ، سريعة جدًا)
- انسخ تلك الحزم الصغيرة
git fetch
الزيادة من الحزم التدريجية الصغيرة
u003C/ downtime: no origin to remove>- استعادة الوصول
إذا كان هناك اتصال ممكن (من خلال SSL) بين الخادم الجديد والقديم:
- سأقوم بإنشاء مستخدم خاص "ترحيل" ، مع الوصول إلى جميع المشاريع
clone --bare
كل مشاريع على الخادم الجديد- نسخ تحوم الخطافات
- عدم السماح بالوصول إلى الخادم القديم
- اجعل آخر
git fetch
على كل ريبو مستنسخ - إزالة الأصلu003C/ downtime>
- استعادة الوصول
لا تنتمي إلى StackOverflow