كيف يمكنك إنشاء تصميم يتضمن واحدًا فقط من العديد من التغييرات المعلقة؟

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

سؤال

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

وبالطبع لدي جهاز خاص بي به عشرات الملفات في حالة "قيد التقدم".

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

لكن بالطبع لا يمكنني الالتزام بالتغيير في المستودع حتى يتم اختباره.

يبدو التفرع وكأنه مبالغة في هذا الأمر.ماذا تفعل في بيئتك لعزل التغييرات الخاصة بالإصدارات والإصدارات التجريبية؟

@ مات ب:لذا، أثناء انتظارك للحصول على تعليقات حول التغيير الذي قمت به، ماذا تفعل؟هل تعمل دائمًا على شيء واحد بالضبط؟

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

المحلول

إذن أنت تتساءل عن كيفية التعامل مع العمل على "مهام" متعددة في وقت واحد، أليس كذلك؟باستثناء المتفرعة.

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

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

نصائح أخرى

أفضل إنشاء واختبار الإصدارات على الجهاز/البيئة المحلية الخاصة بي قبل الالتزام بأي تغييرات أو الترويج لها.

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

شئ مثل هذا:git stash && ./bootstrap.sh && إجراء الاختبارات :)

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

عندما يتم ذلك بشكل جيد، تحصل على عدد من الفوائد:

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

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

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

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

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