سؤال

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

قرأت اليوم عن MQ (قوائم الانتظار الزئبقية - الفصول 12 و 13).أعتقد أنني فهمت المفهوم الكامن وراء MQ، لذا سؤالي هو:

هل هناك أي ميزة لـ MQ على الفروع (المسماة) في Mercurial (بالنسبة للسيناريو الخاص بي)؟

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

المحلول

الميزة الرئيسية لـ MQ على الفروع المسماة هي:

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

  • سيتم فصل التغييرات في تصحيحاتك بشكل واضح عن التغييرات التي تم إجراؤها في المنبع.عندما تقوم بدمج فرعين، فإنك تخلط بين تياري التطوير.وهذا يجعل من الصعب رؤية التغييرات التي أجريتها دون رؤية التغييرات القادمة من الفرع الرئيسي.

  • أسماء التصحيح عابرة.عندما انت hg qfinish التصحيح المطبق، لا يوجد أي أثر لاسم التصحيح المتبقي في الالتزام.لذلك يمكنك استخدام MQ دون التنسيق أولاً مع المستودع الأولي حيث أنهم لن يلاحظوا MQ أبدًا.

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

  • ليس لديك اسم فرع دائم في مجموعات التغييرات.الناس في بعض الأحيان تعامل مع الفروع المسماة على أنها يمكن التخلص منها وينزعجون عندما يدركون أن فرعًا مسمىًا ثابت في التاريخ.(يمكنك بالفعل تعيين اسم الفرع باستخدام hg branch قبل دفع التصحيحات، لذا فإن هذه النقطة ليست سيئة للغاية.)

عيوب MQ هي:

  • إنها أداة إضافية للتعلم.إنها قوية، ولكنها تمنحك أيضًا فرصة أكبر لإطلاق النار على قدمك.جري hg qdelete سوف حقا يمسح التصحيح وحتى تتمكن من التخلص من البيانات.(أعتقد أن هذا أمر جيد، ولكن لدينا مستخدم Git يأتي إلى قائمتنا البريدية يشتكي من هذا الأمر.)

  • أنت تجعل التعاون مع الآخرين أكثر صعوبة.أنت يستطيع دور .hg/patches في مستودع ودفع/سحب التصحيحات بين المستودعات ولكن من الصعب القيام بذلك إذا كنت أكثر من مطور واحد.المشكلة هي أنه ينتهي بك الأمر إلى دمج التصحيحات إذا قام أكثر من شخص بتحديث نفس التصحيح.

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

نصائح أخرى

سؤال جيد.هذا يعتمد.شخصيا أنا كراهية نظام المتفرعة الزئبقية، وأحاول تجنب ذلك عندما أستطيع (استخدام الإشارات المرجعية المدفوعة بدلا من الفرع).

MQ هو أداة رائعة، مع قوة كبيرة ومخاطر كبيرة.يمكنك أيضا النظر في استخدام pbranch . تعتبر

MQ أداة رائعة إذا كنت بحاجة إلى إنتاج وصيانة مجموعة تصحيح للمشروع، مثل إضافة ميزة إضافة ميزة X إلى المشروع والحفاظ على تصحيحات محدثة باستخدام رمز upstream.

المرجعية (أو الفروع إذا كنت تحب) جيدة لمهمة التطوير القصيرة التي تتطلب دمجها في التعليمات البرمجية المنبع.

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