ما هي الطريقة الصحيحة للتعامل مع تكرار يدمج من SVN فرع ؟

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

  •  05-07-2019
  •  | 
  •  

سؤال

نحن هنا قد يكون SVN مستودع مع الجذع فرع التنمية على الإصدار الجديد.

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

لقد حل جميع الصراعات لحسن الحظ ما يكفي وملتزمة الجذع.

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

عندما تفتح مراجعة الرسم البياني يظهر الجذع لدرجة أن فرع انشقت لكن لا تظهر الدمج.يجب عليه ؟

الخادم:WinServer2003 (R2sp2), VisualSVNServer (1.7.2).العميل:يندوز إكس بي(sp3) ، لقد تم استخدام TortoiseSVN (1.6.5) أن تفعل كل هذا ، ولكن لدي أيضا سطر الأوامر تثبيت العميل.

أنا لا الدمج عن طريق التأكد لدي الجذع حتى الآن ، باستخدام TortoiseSVN للقيام دمج و لقد حدد "إعادة إدماج فرع" عندما قدم مع خيار الحوار.أنا وضعت دمج العمق "نسخة العمل"

أنا التعامل مع هذا السيناريو بشكل خاطئ ؟ هل يجب أن أفعل شيء مختلف ؟

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

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

المحلول

وفيما يلي من نهاية <لأ href = "http://svnbook.red-bean.com/en/1.5/svn-book.html#svn.branchemerge.basicmerging.stayinsync" يختلط = "noreferrer" > هذا الفصل من الكتاب SVN:

<اقتباس فقرة>   

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

نصائح أخرى

في هذه الحالة لن دمج رمز من فرع إلى الجذع حتى بعد الانتهاء من التنمية.

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

جوابي يجعل بعض الافتراضات بما في ذلك:

  • كنت قد يعيش الجذع dev فروع
  • لديك واحد فقط مباشر الإصدار (أيليس الحفاظ على تراث الإصدارات)

على أمل أن يساعد.

ومن الممكن الآن فعلا القيام المتكررة دمج ثنائية الاتجاه

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


في ما لا يقل عن إس نسخة 1.6 وبعد ذلك يمكنك لا تتكرر دمج ثنائية الاتجاه. يمكنك دمج من فرع 'الرئيسي' إلى فرع الطفل عدة مرات كما تريد مع مجرد دمج إس، ولكن في كل مرة كنت دمج فرع إلى الرئيسية، عليك أن تعطي الخيار

--reintegrate كما ورد في إجابات أخرى.

على ما لديك أيضا القيام به هو ان اقول فرع بأنك دمجها في خطوة اليدوية الثانية (مع أن فرع سحبه وتحديثها) مع الأمر

svn merge --record-only -c 391 ^/calc/trunk

391 هنا يمثل دمج ارتكاب عدد من فرع --reintegrate ارتكاب فعلت للتو في احسب / الجذع.

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


ويتم توثيق كل شيء في الكتاب SVN تحت <لأ href = "http://svnbook.red-bean.com/en/1.6/svn-book.html#svn.branchmerge.advanced.reintegratetwice" يختلط = "نوفولو"> الاندماج مرتين

<اقتباس فقرة>   

وهذا الدمج يستخدم بناء الجملة دمج الانتقاء، الذي تم عرضه   في القسم المسمى "Cherrypicking". الاستمرار في تشغيل   مثال من قسم يسمى "إعادة دمج فرع"، حيث   كان المراجعة X مراجعة 391:

$ cd my-calc-branch $ svn update Updating '.': Updated to revision
393. $ svn merge --record-only -c 391 ^/calc/trunk
--- Recording mergeinfo for merge of r391 into '.':  U   . $ svn commit -m "Block revision 391 from being merged into my-calc-branch."
 Sending        .

 Committed revision 394.
<اقتباس فقرة>   

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

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