Mercurial: كيفية مزامنة بقع MQ من ريبو رئيسي كبقع MQ إلى مجموعة من الاستنساخ repos

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

  •  26-09-2019
  •  | 
  •  

سؤال

لا بد لي من تشغيل عشرات من اختبارات البناء المختلفة على قاعدة رمز يتم الحفاظ عليها في مستودع الزئبق. لا أرغب في تشغيل هذه الاختبارات بشكل تسلسلي على نفس المستودع لأنها تعدل مجموعة من الملفات الشائعة وأريد تشغيلها بالتوازي على أجهزة مختلفة. أيضًا ، بعد إجراء جميع الاختبارات ، أريد الوصول إلى أحدث نتائج الاختبار من مجالات العمل هذه. حاليًا أقوم باستنساخ المستودع الرئيسي بعد عشرات المرات وأجري في كل استنساخ اختبار مختلف. قبل كل اختبار ، أقوم بتسلسل إعداد السحب/التحديث/التطهير من أجل بدء الاختبار في أحدث حالة نظيفة. هذا أمر جيد بالنسبة لي.

أنا أيضًا أقوم بإعداد تغييرات جديدة باستخدام امتداد MQ الذي سأختبره على جميع الحيوانات المستنسخة أعلاه قبل ارتكابها. لاختبار بعض تصحيحات MQ المرشحة الجاهزة ، أريد بطريقة أو بأخرى نشر/مزامنةها لتكون متاحة في استنساخ اختبار وتطبيق تلك الجاهزة للاختبار باستخدام بعض الحراسة قبل إجراء الاختبار.

هل قام أي شخص بهذا التزامن من قبل؟ ما هي الطريقة الأكثر بساطة للقيام بذلك؟ هل أحتاج إلى تصحيحات MQ من إصدار ذلك؟

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

المحلول

يمكن الحفاظ على البقع في مستودعها الخاص شريطة أن تنقل مفتاح "-C" إلى Qinit مثل ذلك

hg qinit -c

قد تظل قادرًا على إنشاء ريبو التصحيح بعد الحقيقة عبر

cd .hg/patches
hg init
hg addremove
hg commit -m "my patches"

لكنني لم أحاول ذلك شخصيًا.

ثم يمكن التعامل مع .hg/البقع مثل أي مستودع ميركوريال آخر. لذلك أعتقد أنك ربما تتمكن من لف بعض البرمجة النصية. للوصول إلى .hg dir من repos المستنسخة والقيام

hg clone http://centralrepo.com/patch_repo ./patches

نصائح أخرى

هذا هو الحل الذي قمت بتطبيقه. ملاحظات قليلة:

  • يتم تطبيق جميع البقع المحمية بـ Ready_for_testing وتلك غير المحصورة للاختبار.
  • يعد استخدام REPOs من الإصدار أفضل لأنه يمكننا إجراء تجريد لتنفيذ مستودع قائمة الانتظار
  • أنا استخدم الزئبق 1.5.1
  • ماجستير في الريبو في master دير
  • استنساخ repos في clone-x dirs

فيما يلي الخطوات (قد يكون بعضها اختياريًا):

  1. مرة واحدة: ضع بقع في مستودع رئيسي ضمن الإصدار باستخدام Mercurial:
    أ. hg -R master init --mq #لا يوجد حدوث هنا ، يمكن القيام به لاحقًا
    ب. hg -R master commit --mq --addremove --message 'initial patch queue' #اجعلهم مرئيين لاستنساخ repos

  2. لكل استنساخ ، مرة واحدة بعد الانتهاء من إنشاء استنساخ: على افتراض عدم وجود بقع تم إنشاؤها حتى الآن على الحيوانات المستنسخة ، قم بتهيئة mQ sub-Repository:
    أ. hg clone master\.hg\patches clone-x\.hg\patches
    ب. hg -R clone-x qselect ready_for_testing

  3. لكل تغيير جاهز في الماجستير (التصحيح الذي تم إنشاؤه/استيراده في MQ REPO): قم بذلك قبل بدء اختبارات ذلك:
    أ. مراجعة/تحديث حراس تصحيحات MQ: يجب أن تكون تلك المتضمنة للاختبار غير محروم أو مع +Ready_For_Testing
    ب. hg -R master commit --mq -A #اجعلهم مرئيين لاستنساخ repos

  4. لكل استنساخ ، لكل تكرار [اختبار] لكل استنساخ: هل تسلسل التحضير هذا قبل إجراء الاختبار الفعلي:
    أ. hg -R clone-x qpop --all --force
    ب. hg -R clone-x pull
    ج. hg -R clone-x update --clean
    د. hg -R clone-x purge --all
    ه. hg -R clone-x pull --mq
    F. hg -R clone-x update --mq
    ز. hg -R clone-x qpush --all

اعتبارًا من الإصدار 1.5 الزئبقي ، يمكنك إنشاء مستودع قائمة انتظار التصحيح في ريبو ميركوريال موجود بالفعل باستخدام الأمر التالي:

hg init --mq

لا بأس أن يكون لديك تصحيحات في قائمة الانتظار عند إصدار هذا الأمر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top