كيف يمكنك إدارة ملفات .vcproj في التحكم بالمصادر والتي تم تغييرها بواسطة مطورين متعددين؟

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

  •  03-07-2019
  •  | 
  •  

سؤال

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

كيف يمكنك دمج هذه التغييرات؟

ملفات vcproj هي مجرد ملفات نصية، لذا من الممكن تحريرها يدويًا ولكنها غير قابلة للتحرير اليدوي، خاصة بواسطة المطورين المبتدئين.

الطرق التي يمكنني التفكير بها هي

  • احصل على أحدث إصدار من svn وأعد إضافة جميع التغييرات المحلية يدويًا
  • قم بتحرير الملف يدويًا لحل أي تعارضات من الدمج التلقائي
  • تنفيذ شكل من أشكال نظام القفل لمنع التغييرات المتزامنة
  • لديك اتفاقية بين المطورين حتى لا يقوموا بإجراء تغييرات متزامنة

نستخدم حاليًا الخيار الأول لإعادة إضافة جميع التغييرات يدويًا ولكن هذا يستغرق وقتًا طويلاً وكنت أتساءل عما إذا كانت هناك طريقة أفضل.

مع الملفات المصدرية، تعمل ميزة الدمج التلقائي في معظم الأوقات ولا نواجه الكثير من التعارضات.

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

المحلول

لقد وجدت أن الخيار 2 (تحرير الملفات يدويًا) يعمل بشكل جيد بشكل عام، طالما أنك تستخدم أداة فرق جيدة (أستخدمها WinMerge).المشكلة الرئيسية التي واجهتها هي أن Visual Studio يقوم أحيانًا بإعادة ترتيب الملف.ولكن، إذا كان لديك أداة فرق/دمج جيدة، فيجب أن تكون قادرة على التمييز بين المحتوى الذي تم تغييره والمحتوى المنقول.يمكن أن يساعد كثيرا.

نصائح أخرى

قد تجد مشروع:دمج أو أدوات لملف SLN مفيد

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

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

لا يزال من الممكن أن تصبح بيئات المطورين غير متوافقة، لكنها ظهرت عندما حاولوا بناء الأشياء بأنفسهم.

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

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

لقد وجدت هذا مؤخرًا: http://www.codeproject.com/KB/macros/vcproj_formatter.aspxإذا قمت بتشغيل هذه الأداة على ملف vcproj وعلى نسخة معدلة منه، فيمكنك دمجهما معًا بسهولة باستخدام أداة دمج النصوص المفضلة لديك، بالإضافة إلى أن النتيجة هي ملف vcproj جميل أكثر إحكاما.

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

أعتقد أن هذا الوضع ليس له حل سحري في الوقت الحالي - أحيانًا يكون الاندماج أمرًا مؤلمًا.

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

تغييرات متزامنة إلى المشروع بخير تمامًا طالما أن الناس يتواصلون.

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