قبل التاريخ
في الصيف ، تم نشر منشور مدونة رسمي على مدونة BitBucket الرسمية للإعلان عن نهاية الدعم لمستودعات Mercurial.
سيتم وقف الزئبق على مرحلتين:
- بدءًا من 1 شباط (فبراير) 2020 ، لن يتمكن المستخدمون من إنشاء مستودعات جديدة.
- بدءًا من 1 يونيو 2020 ، لن يتمكن المستخدمون من استخدام وظائف Mercurial في Bitbucket أو من خلال واجهة برمجة التطبيقات ، وسيتم حذف جميع مستودعات Mercurial.
أسباب هذا القرار واضحة إلى حد ما ، لكنني أستخدم عدة مستودعات على Mercurial في عملي (كنت دائمًا أحب Mercurial أكثر ، لكن سأترك هذا السؤال خارج نطاق هذه المقالة) ، والذي كنت بحاجة إلى تحويله إلى GIT.
في الواقع ، بدأ هذا المكان ...
المشكلة
عرض المطورون وخدمة الدعم في BitBucket عدة خيارات لمثل هذا التحويل ، جربتهم جميعًا ، وفي الوقت نفسه جربت أدوات الطرف الثالث ، مثل
استيراد المستودعات إلى GitHub.
اتضح أن كل هذه الأدوات تفسد أسماء الملفات والدلائل التي تحتوي على أحرف في الأبجدية السيريلية ، ولدي الكثير من هذه الملفات (المعارف التقليدية والمواصفات وغيرها من الملفات المشابهة). إنه أمر مضحك أن تلتزم التعليقات التي تحتوي على السيريلية جيد التحمل وعرضها بعد الترحيل.
لقد وجدت معلومات على الإنترنت أن هناك أدوات في Mercurial (مفاتيح في ملف تهيئة المستودع) تتيح لك التحكم في ترميز الأحرف الافتراضي ، لكن أولاً ، يتم تضمينها بشكل صريح فقط ، وثانياً ، لا توجد أداة لتحويل المستودع الحالي . حسنًا ، لم أتحقق من كيفية مساعدة هذا الخيار في الترحيل باستخدام أدوات جاهزة - لقد فات الأوان على هذه الطريقة.
لم تكن هناك رغبة في البحث يدويًا عن ملفات المشاكل والقيام بإعادة التعبئة اليدوية ، لذلك اضطررت للحفر قليلاً وإيجاد حل.
ربما يكون نقل مستودع به حروف روسية في أسماء الملفات مناسبًا أيضًا لشخص ما ، وسوف يوفر مقالي بعض الوقت.
قرار
الإجراء الأساسي
- خذ نفسك مستودع git@github.com: seewindcn / tortoisehg.git - يحتوي على المكون الإضافي fixutf8 ، وهو غير موجود في التوزيع الرئيسي. يفترض كذلك أن النسخة المحلية ستكون موجودة في الدليل D: \ Development \ tortoisehg
- قم بعمل نسخة من مستودع Mercurial الخاص بك حتى لا تتلف الموقع الرئيسي. علاوة على ذلك ، يتم تنفيذ جميع الأوامر في دليل النسخ.
- تصحيح أسماء الملفات والدليل باستخدام الأمر D: \ Development \ tortoisehg \ hg.exe addremove -s 100
- الالتزام بمستودع التخزين D: \ Development \ tortoisehg \ hg.exe -m "إصلاح أسماء الملفات"
- قم بتشغيل المكون الإضافي hggit - في ملف hg \ hgrc الذي تحتاج إلى إضافته
[ملحقات]
hggit = - الاستعداد للتحويل إلى GIT - قم بإنشاء ملصق رئيسي باستخدام الأمر D: \ Development \ tortoisehg \ hg.exe المرجعية -r master default
- إنشاء مستودع GIT في BitBucket
- نلتزم بمستودع hg push git + ssh: //git@bitbucket.org: <user> / <reponame> .git ( ملاحظة ، يستخدم هذا الزئبق العادي لأن النسخ من seewindcn لا يريد العمل على SSH)
- نحن نتحقق من موقع BitBucket الإلكتروني ، ونتأكد من عدم كسر أسماء الملفات السيريلية
- نقوم باستنساخ مستودع GIT لأنفسنا ، ونفحص أسماء الملفات ، ونجري مقارنة بايت لجميع الملفات ، وبناء المشروع ، والاختبارات
- بعد الإنشاء ، من المحتمل أن يكون هناك الكثير من الملفات الجديدة التي ستقترح GIT ارتكابها. سيتعين تحويل ملف .hgignore إلى .gitignore باليد. لحسن الحظ ، يمكنك القيام بذلك مرة واحدة واستخدام ملف واحد لجميع المستودعات الأخرى.
نتيجةً لذلك ، تمكنا من نقل الفرع الافتراضي الرئيسي لمستودع Mercurial الأصلي مع كامل تاريخ التعهدات إلى سيد مستودع GIT وحتى مع التسميات. من السلبيات ، ألاحظ فقط النقص التام في المعلومات حول التغييرات في الملفات باستخدام الأبجدية السيريلية في تاريخ التعيينات - هناك إلتزامات ، ولا توجد حتى إشارات إلى الملفات مع الأبجدية السيريلية (بقية الملفات ، بالطبع ، في حالة ممتازة).
بشكل عام ، يمكن اعتبار المهمة مكتملة ، ولكن بدافع الاهتمام بالرياضة ، كان من المثير بالنسبة لي نقل الفروع المتبقية.
التفاف فرع باستثناء الافتراضي
- الحصول على قائمة فروع hg فروع
- لكل فرع
- بدّل إلى hg up <branchname> branch
- إنشاء تسمية (يجب ألا يتطابق اسم التصنيف مع اسم الفرع): hg bookmark -r <hgbranchname> <gitbranchname>
- اسكب الفرع في GIT hg push git@bitbucket.org: <user> / <reponame> .git
قد يحدث أن يحتوي اسم الفرع أيضًا على الأبجدية السيريلية ، في هذه الحالة سوف تظهر فروع hg krakozyabry. في هذه الحالة ، استخدمت طاولة عمل زئبق بصرية - تحولت إلى فرع وأنشأت ملصقًا هناك.
عند هذه النقطة يأتي كامل فنغ شوي.
في حال كان هناك شخص مهتم بالحفر بشكل أعمق ، فأنا أترك ...
قائمة المراجع