سؤال

أنا استخدم إس لمشروع im العمل على مع اثنين من المطورين الآخرين.إس يعمل بشكل جيد بالنسبة المصدر السيطرة على جميع طرق الحصول على الصراعات عندما نلتزم dlls.

عندما أفعل حل الصراع (الذي حذف بلدي dlls مهرجان دبي السينمائي الدولي برنامج قادر على التعامل مع الملفات الثنائية) ثم تضطر إلى إعادة بناء لارتكاب.كيف حالك من المفترض أن حل الصراعات مثل هذا ؟

تحرير:

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

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

المحلول

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

كل تتعارض ملف التخريب الأماكن الزائدة ثلاثة ملفات unversioned في نسخة العمل الخاص بك:

اسم الملف.لي

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

اسم الملف.rOLDREV

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

اسم الملف.rNEWREV

هذا هو الملف الخاص بك التخريب العميل فقط المتلقاة من الملقم عند تحديث نسخة العمل الخاص بك.هذا الملف يتوافق مع رأس مراجعة المخزون.

هنا OLDREV هو مراجعة عدد من الملفات الخاصة بك في .إس الدليل ، NEWREV هو تنقيح عدد من مستودع الرأس.

الآن, لحل هذا الصراع ، وإزالة ملفات إضافية لا تريد:

  • إذا كنت تريد أن تبقى الخاص بك dll, حذف الملفات اسم الملف.rOLDREV ، اسم الملف.rNEWREV
  • إذا كنت تريد أن تبقي dll من مستودع, حذف الملفات اسم الملف.rOLDREV واسم الملف.الألغام ، ثم نسخ الملف.rNEWREV إلى اسم الملف

بعد ذلك تنفيذ

svn resolved filename

أقول التخريب الذي حل الصراع نفسك.

نصائح أخرى

إذا انها DLL التي كنت بناء (بدلا من واحد خارجي لديك أي مصدر لل) ثم يجب أن يكون مصدر في التحكم بالمصادر، وليس ثنائي.

إذا كنت لا تريد إدراجه في هذا مستودع خاص ثم يمكنك تضمين على أنها إس: خارجي

عموما لن متجر الخاصة بك جمعت DLLs في المصدر التحكم في كل شيء.هل لديك سبب معين أن عليك أن تفعل هذا ؟

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

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

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

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

لقبول النسخة التي في الفرع أنت دمج من استخدام:

svn resolve --accept=theirs-full path/to/filename

لقبول النسخة التي كانت سابقا في الفرع الحالي ، استخدام:

svn resolve --accept=mine-full path/to/filename

في بعض الأحيان, SVN سوف يرفضون استخدام theirs-full مع تحذير:

svn: warning: W195024: Inapplicable conflict resolution option given for conflicted path

لأن SVN هو قطعة من القرف عندما يتعلق الأمر دمج.في هذه الحالة, يمكنك نسخ الملفات يدويا كما في قبول الإجابة https://stackoverflow.com/a/410767/2279059, بدلا من استخدام خيارات سطر الأوامر التي تهدف على ما كنت تحاول القيام به.إذا كنت تعرف كل الملفات متطابقة (ولكن SVN لا يزال وضع علامة عليها باعتبارها الصراع لأسباب سبق ذكرها) ، يمكنك أيضا استخدام

svn resolve --accept=working path/to/filename

في حين أن هذا في حالة الملفات متطابقة ، هو فعليا نفس كل الأوامر الأخرى ، SVN لن الجبان رفض تنفيذ ذلك.فهل يعقل هذا ؟ لا, لا.التعامل مع ذلك.

فمن المعقول أن يكون أيضا ثنائيات في التحكم في الإصدار:

  • فإنه يتجنب المتاعب من إعادة البناء من أجل الناس الذين فقط استخدام ثنائي.

  • ثنائي هو مسمر عند الإصدار.

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

تأكد من دلس الخاصة بك يكون لها خاصية svn:mime-type المقرر أن application/octet-stream أو بعض الدول الأخرى نوع غير نصية.

svn propget *.dll
svn propset svn:mime-type application/octet-stream *.dll

وسوف لا تزال بحاجة الى الواقع <م> تصميم الصراعات عند وقوعها.

وتحقق في ملف نوع المحتوى الفصل من الوثائق.

حتى إذا كان لديك *.dll في مجلد منفصل لها أسهل بكثير من القيام به على النحو التالي:

  1. مباشرة قبل بناء التغيير تحديث الخاص بك *.dll المجلد أفضل أيضا تحديث المصادر الخاصة بك ، إذا كنت تثق أن زملائك فقط ارتكاب compilable التعليمات البرمجية المصدر.(في حالة من الصراع (ما يمكن أن يكون خطأ في هذه النقطة, كما يمكنك تغير شيئا قبل تحديث إلى أحدث التنقيح))
  2. لا بناء.
  3. مباشرة ارتكاب النتيجة.

بدلا من ذلك:

لا بناء على المسار في الدليل ، بناء على ما في الخارج ، حتى كنت سعيدا مع كل ما هو النتيجة.

ثم المضي قدما على النحو التالي:

  1. تحديث عمل نسخ من ملفات dll في مجلد (إذا كان هناك أي تعارض في خطأ في حل الصراع من خلال "الحفاظ على ملكهم")
  2. نسخ العمل الخاص بك .dlls إلى عمل نسخ
  3. إبلاغ زملائك أنك سوف ترتكب تنقيح جديد (يمكنك أن تدع هذه الخطوة بعيدا)
  4. ارتكاب العمل الخاص بك إذا كان هناك أي تضارب يجب أن يكون على خطأ.

لديك اثنين من الاحتمالات الآن:

5a.كنت جدا كريه الشخص و حل المشكلة عن طريق الحفاظ على الألغام.

5b.كنت تعمل كما يجب أن تعمل...قراءة ملف السجل و معرفة من ارتكب أيضا خلال وقت قصير كنت في حاجة إلى نسخة العمل الخاص بك إلى المجلد ثم الضغط على ارتكاب.التحدث مع زميل.الاتفاق على مواصلة مسار العمل.

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