كيف يمكنني تحديد ما إذا كان SVN: MergeInfo فاسد وكيف يمكنني إصلاحه؟

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

سؤال

أظن أنني قد أفسدت MergeInfo لكنني لست متأكدًا. هل يعرف أي شخص كيف سأقوم بتصميم وما هي الموارد الموجودة هناك للمساعدة في حل المشكلات؟

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

يستخدم الأشخاص نمط دمج هذا أ) سحب-دمج جذع إلى فرع ، حل ، اختبار ، ارتكاب ب) الدفع-دمج فرع إلى درب ، حل ، اختبار ، ارتكاب فرع) إسقاط قديم منذ أن تم ذلك)

بحلول نهاية هذا ، يجب أن يكون الفرع والجذع في محاذاة.

المشاكل التي نراها:

  1. التغييرات التي لم يتم الإبلاغ عنها أثناء دمج الجذع إلى الفرع تظهر في فرع لاحقة
  2. الصراعات على SVN: خصائص MergeInfo أثناء الدمج
  3. ملف مفقود ، ولكن التحرير المحلي على ملف جديد تمت إضافته في الفرع ودفعه إلى Trunk
  4. ورد + حذف محلي (تم حذف ملف على الجذع وعروض الفرع على أنه تعارض)

(1) لا ينبغي أن يحدث. يجب أن يضع السحب من الفرع إلى الجذع اثنين متزامن لجميع التغييرات الموجودة بالفعل على الجذع. التغييرات في دمج الفرع إلى الغرب هي التغييرات التي حدثت على الجذع. لذلك في الاندماج الأول كان ينبغي عليهم الانتشار إلى فرع ولكن لم يفعلوا. هذا يشير إلى الفساد في بيانات MergeInfo التي من شأنها "إخفاء" تغييرات الجذع.

(2) لا ينبغي أن يحدث. يجب أن تقوم SVN بإدارة التغييرات في تتبع الدمج. هذا يشير أيضًا إلى الفساد في بيانات MergeInfo

(3) لا ينبغي أن يحدث. هذه حالة ملف جديد تمت إضافته على الفرع. يجب أن تظهر كملف جديد تمت إضافته إلى Trunk. هذا يشير أيضًا إلى الفساد في بيانات معلومات الدمج.

(4) أعتقد أن هذا خطأ SVN وأنه لا يمكننا إصلاح هذا. لا يزال إذا كانت هذه هي مشكلتنا الوحيدة سأكون سعيدًا

نحن حاليًا على خادم SVN 1.5.x مع العملاء باستخدام SVN 1.6.x و SVN+SSH للاتصال. نخطط للذهاب إلى أحدث وأكبر SVN لأن بعض الإصلاحات قد تؤثر على مشاكلنا.

ومع ذلك ، يبدو من المؤكد أن بيانات MergeInfo الخاصة بنا خاطئة.

  • يندمج لا يبلغ عن كل التغييرات
  • صراعات في دمج خصائص MergeInfo

أي أماكن جيدة لي لبدء البحث؟

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

المحلول

لقد أجريت بعض التجارب مع SVN المتفرعة/الاندماج ، واكتشفت أن هناك بعض المواقف التي لا تعمل فيها الدمج - على سبيل المثال التغييرات من الجذع. لذلك إذا استمرت في استخدام SVN لفروع الميزات ، فستكون في عالم الألم.

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

نصائح أخرى

كان لدينا مشكلات مماثلة بسبب ظروف مماثلة وحلها إلى حد كبير.

الرائد هو هذا:

إذا كنت تندمج في فرعك من Trunk بعد إنشاء الفرع ، فأنت بحاجة إلى الإشارة إلى الجذع مع التزام الفرع (باستخدام دمج SVN-سجل فقط) ، وإلا جذع إلى الفرع مرة أخرى في الجذع.

من الواضح أن هذا ينتهي بإعداد التغييرات إلى الجذع الذي تم إجراؤه بعد التزام الفرع في وقت لاحق> ، يميل إلى التسبب في تعارضات هائلة (وخاصة تعارضات الأشجار إذا قمت بإنشاء ملف أو دليل جديد في Trunk) ، إلخ.

لذا فإن عمليتنا هي إما أن نزامب الجذع أبدًا في فرع بعد إنشاؤه (يعمل بشكل جيد للفروع قصيرة العمر) ، أو للقيام بما يلي:

  • الفرع ب من الجذع
  • يرتكب إلى الجذع والفرع
  • إعادة دمج الجذع إلى فرع وارتكاب (حل النزاعات ولكن لا إجراء أي تغييرات ، حتى في التجميع)
  • قم على الفور بدمج SVN-سجل فقط من مراجعة ارتكاب الجذع إلى الفرع
  • إصلاح أي مشكلات أخرى مع الفرع ومواصلة التنمية
  • إعادة الاندماج من الفرع إلى الجذع عند الانتهاء.

وجدت: http://www.collab.net/community/subversion/articles/merge-info.html مفيد أثناء العمل على ما كنا نفعله خطأ.

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