ما هي الطريقة الصحيحة للقيام بدمج التخريب في Eclipse؟

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

  •  01-07-2019
  •  | 
  •  

سؤال

أنا معتاد جدًا على كيفية إجراء عمليات دمج CVS في Eclipse، وأنا سعيد أيضًا بالطريقة التي يعمل بها كل من Subclipse و Subversive مع مستودع SVN، لكنني لست متأكدًا تمامًا من كيفية إجراء عمليات الدمج بشكل صحيح.

عندما أقوم بالدمج، يبدو أنني أرغب في لصق الملفات المدمجة في دليل منفصل في مشروعي بدلاً من الكتابة فوق الملفات القديمة التي سيتم استبدالها في الدمج، كما اعتدت على ذلك في CVS.

السؤال ليس خاصًا بـ Subclipse أو Subversive.

شكرا للمساعدة!

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

المحلول

أنصح بعدم محاولة استخدام المكونات الإضافية لـ Eclipse باعتبارها وصولك الأساسي إلى Subversion.

إذا كنت تقوم بالتطوير على Windows، فإن TortoiseSVN هو أفضل برنامج رأيته للوصول إلى Subversion.انتقل إلى الدليل الذي ترغب في دمجه، ثم انقر بزر الماوس الأيمن عليه واستخدم خيار دمج Tortoise SVN.بافتراض وجود دمج غير تفاعلي، بمجرد حصولك على تعارضات، سيتعين عليك مراجعة كل ملف متعارض وتحرير التعارضات قبل وضع علامة عليها على أنها تم حلها.بالنسبة لهذه العملية، أوصي ببرنامج يسمى KDiff3، والذي يعرض نسخة المستودع المحلي لديك (ما تم تخزينه في .svn قبل الدمج)، ونسختك المحلية (بما في ذلك أي تغييرات)، والنسخة القادمة من المستودع، ويسمح لك بذلك يمكنك بسهولة رؤية نتيجة الدمج (وحتى تعديلها يدويًا إذا لزم الأمر).كما أنه يتعامل مع مجموعة من الصراعات البسيطة تلقائيًا.

KDiff3 هو برنامج محمول، أما TortoiseSVN فهو امتداد Windows Shell، لذا إذا كنت تستخدم بيئة أخرى، فسأحاول استخدام SVN فقط للدمج.ولكن هذا سيكون أكثر من الألم :)

نصائح أخرى

دمج فرع كامل في الجذع

  1. افحص تاريخ مشروع الفرع لتحديد الإصدار الذي تم أخذ الفرع منه

    • بشكل افتراضي، يعرض "السجل" لفريق Eclipse فقط المراجعات الـ 25 الماضية، لذا سيتعين عليك النقر فوق الزر الموجود في هذا العرض المسمى "إظهار الكل"
    • عندما تقول "إظهار الكل"، سيعيدك ذلك إلى ما بعد تاريخ الفرع ويعرض لك السجل الكامل لصندوق الأمتعة أيضًا، لذلك سيتعين عليك البحث عن تعليقك في المكان الذي تفرعت فيه
    • ملحوظة:إذا كنت تستخدم Tortise SVN لهذه المهمة نفسها (انتقل إلى الفرع وحدد "إظهار السجل") فسوف يعرض لك سجل الفرع فقط حتى تتمكن من معرفة المكان الذي بدأ فيه الفرع بالضبط
  2. أعلم الآن أن 82517 كان معرف الإصدار الأول لسجل الفرع.لذا فإن جميع إصدارات الفرع التي تجاوزت 82517 تحتوي على تغييرات أريد دمجها في صندوق السيارة

  3. انتقل الآن إلى مشروع "الجذع" في مساحة عمل Eclipse الخاصة بك وحدد "النقر بزر الماوس الأيمن - الفريق - دمج"

  4. العرض الافتراضي هو دمج عنوان url واحد

    • حدد عنوان URL للفرع الذي تقوم بالدمج منه
    • ضمن المراجعات حدد "الكل"
    • اضغط موافق
  5. سينقلك هذا إلى منظور "مزامنة الفريق" (إذا لم يكن الأمر كذلك، فيجب عليك الذهاب إلى هناك بنفسك) لحل النزاعات (انظر أدناه)

إعادة دمج المزيد من تغييرات الفروع في صندوق السيارة

  1. قم بفحص سجل مشروع قناة الاتصال لتحديد آخر مرة قمت فيها بالدمج في قناة الاتصال (كان ينبغي عليك التعليق على هذا)

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

  3. انتقل الآن إلى مشروع "الجذع" في مساحة عمل Eclipse الخاصة بك وحدد "النقر بزر الماوس الأيمن - الفريق - دمج"

  4. العرض الافتراضي هو دمج عنوان url واحد

    • حدد عنوان URL للفرع الذي تقوم بالدمج منه
    • ضمن المراجعات، حدد زر الاختيار "المراجعات" وانقر فوق "استعراض"
    • سيؤدي هذا إلى فتح قائمة بأحدث 25 مراجعة للفرع
    • حدد كافة المراجعات برقم أكبر من 82517
    • اضغط على موافق (يجب أن تشاهد قائمة المراجعة في حقل الإدخال بجوار زر الاختيار)
    • اضغط موافق
  5. سينقلك هذا إلى منظور "مزامنة الفريق" (إذا لم يكن الأمر كذلك، فيجب عليك الذهاب إلى هناك بنفسك) لحل النزاعات (انظر أدناه)

حل النزاعات

  1. يجب أن تكون في منظور "مزامنة الفريق".سيبدو هذا كأي مزامنة عادية لأغراض الالتزام حيث ترى الملفات الجديدة والملفات التي بها تعارضات.

  2. لكل ملف ترى فيه تعارضًا، اختر "النقر بزر الماوس الأيمن - تحرير التعارضات" (لا تنقر نقرًا مزدوجًا فوق الملف، فسيظهر لك أداة إصدار الالتزام، وهذا مختلف تمامًا)

    • إذا رأيت أشياء مثل "<<<<<<< .working" أو ">>>>>>> .merge-right.r84513" فأنت في وضع التحرير الخاطئ
  3. بمجرد حل جميع التعارضات الموجودة في هذا الملف، اطلب من الملف "وضع علامة كمدمج"

  4. بمجرد أن تكون جميع الملفات خالية من التعارضات، يمكنك بعد ذلك مزامنة مشروع Eclipse الخاص بك وإرسال الملفات إلى SVN

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

استخدم تكامل Eclipse، فهو يعمل بشكل جيد تمامًا.

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

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

أولاً، إذا كنت ترى ">>>>>" وما إلى ذلك في ملفاتك عند عرضها في Eclipse، فهذا يعني على الأرجح أنك لا تنظر إلى الملف باستخدام محرر المقارنة المناسب.حاول النقر بزر الماوس الأيمن على الملف في عرض المشروع أو عرض المزامنة وتحديد "تحرير التعارضات" لإظهار محرر المقارنة الذي سيُظهر لك المناطق المتعارضة بيانيًا بدلاً من النص.لاحظ أن محرر المقارنة الذي يظهر لـ "تحرير التعارضات" يختلف عن المحرر الذي تحصل عليه عندما تنقر نقرًا مزدوجًا على ملف في طريقة العرض "المزامنة" - يُظهر محرر المقارنة بالنقر المزدوج الاختلافات بين ملفك الحالي وطريقة وجوده عند قيامك بسحبها أو تحديثها آخر مرة، بينما يعرض مربع حوار مقارنة تحرير التعارضات الاختلافات بين مصدرين للتغييرات (على سبيل المثال، التغييرات التي قمت بدمجها مقابل التغييرات التي كانت موجودة في مساحة العمل الخاصة بك قبل الدمج).

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

https://bugs.Eclipse.org/bugs/show_bug.cgi?id=312585

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

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

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

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

تعتبر أداة الدمج الخاصة بـ openCollabNet للمقطع الفرعي رائعة جدًا.هناك العديد من أنواع الدمج المتاحة وقد أجريت عملية الدمج معها بسلاسة.أنا أوصي به.

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

لقد وصلت إلى هنا لأنني كنت أبحث عن طريقة للدمج في محرر دمج خارجي (KDIFF3) ولكنني أبدأ عملية الدمج من Eclipse.لم أكن راضيًا عن الإجابات المقدمة أعلاه.إذن هنا كيفية تكوين kdiff3 كمحرر دمج وفرق لـ SVN في Eclipse:

انتقل إلى Windows -> تفضيلات → Team -> SVN -> Diff Viewer إضافة تكوين جديد (إضافة زر):الامتداد أو نوع mime:* - إذا كنت ترغب في ذلك، يمكنك تحديد أنواع مختلفة من أنواع mimetypes لمحررين مختلفين، ولم أكن في حاجة إلى ذلك، وبالتالي فإن alquantor.

فرق:مسار البرنامج C:\Program Files\KDiff3\kdiff3.exe (أو أينما كان لديك محرر الدمج الخاص بك - ابحث عن مسار windows، فلا تتردد في إضافة إصدار Linux في التعليقات أو تحرير هذه الإجابة.)

الحجج:${base} ${mine} ${theirs}

دمج:مسار البرنامج C:\Program Files\KDiff3\kdiff3.exe

الحجج:${base} ${mine} ${theirs} -o ${merged}

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

الاستخدام كالمعتاد (فريق->تحرير التعارضات) للدمج والمقارنة->foo لعرض الفرق.

هتافات

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