سؤال

لدي صندوق (أ) وفروعان (B و C). عندما أقوم بدمج A مع C الخاص ب "موافق"، بعد دمج A مع B، لا تملك سابقا جذعك التغييرات C.

ما أريده هو A + B + C في جذع بعد الدمج.

تم التعديل لمزيد من التفسير:

  1. في جذع لدي 3 ملفات: "ملف 1"، "ملف 2" و "ملف 3"؛
  2. أقوم بإنشاء فرع من الجذع ك "فرع 1"؛
  3. أنا أتحول إلى "فرع 1"، وأصلح الأخطاء إلى ملف "ملف 1" والالتزام؛
  4. في الوقت نفسه، يقوم شخص آخر بإنشاء فرع من الجذع ك "فرع 2"؛
  5. هذا الشخص إصلاح الأخطاء الأخرى في ملفات "ملف 2" و "ملف 3" والالتزام؛
  6. تمت الموافقة على "الفرع 2" للنشر، ثم دمج "فرع 2" إلى "الجذع" (موافق)؛
  7. في اليوم التالي تمت الموافقة على "الفرع 1"، ثم دمج "فرع 1" إلى "الجذع"، و "الجذع" تفقد التغييرات من "الفرع 2".
هل كانت مفيدة؟

المحلول

  1. جعل نسخة عمل من trunk
  2. svn merge -r W:X svn://branchA workingCopy
  3. svn merge -r Y:Z svn://branchB workingCopy

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

نصائح أخرى

على افتراض أنك تستخدم التخريب 1.5 أو أكبر، أعتقد أنك تريد "إعادة دمج" فروعك مرة أخرى إلى الجذع، وانظر http://blog.red-bean.com/sussman/؟p=92.

مصطلحاتك ليست واضحة. عندما تقول إنك "دمج A مع B" هل يعني أنك تندمج في ب أو ب إلى أ؟ هل يمكنك شرح ما فعلته بالضبط لإنشاء الفروع، وكيف حاولت القيام بالدموع؟ أيضا، للدمج من المهم أن إصدار SVN الذي تستخدمه.

أقترح عليك قراءة بعناية الفصل على المتفرعة والدموع في كتاب SVN.

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

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

تريد تطبيق الدمج على مساحة العمل الخاصة بك، وليس المستودع. بدلا من ذلك، يمكنك استخدام CVS التي تتعامل مع الفروع بطريقة متفوقة بكثير من SVN.

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