أفضل ممارسات إستراتيجية التخريب الفرعي
تمت كتابة هذه الوثائق لوصف سلسلة 1.7.x من أباتشي "ў SubversionВ®. إذا كنت تقوم بتشغيل إصدار مختلف من سوبفيرزيون، يتم تشجيعك بشدة لزيارة سفنبوك / وبدلا من ذلك راجع إصدار هذه الوثائق المناسبة لإصدار سوبفيرزيون الخاص بك.
أنماط المتفرعة المشتركة.
هناك العديد من الاستخدامات المختلفة للتفرع و سفن دمج، ويصف هذا القسم الأكثر شيوعا.
وغالبا ما يستخدم التحكم في الإصدار لتطوير البرمجيات، لذلك هنا نظرة خاطفة سريعة على اثنين من أنماط المتفرعة / دمج الأكثر شيوعا المستخدمة من قبل فرق المبرمجين. إذا كنت لا تستخدم سوبفيرزيون لتطوير البرمجيات، فلا تتردد في تخطي هذا القسم. إذا كنت مطور برامج باستخدام التحكم في الإصدار للمرة الأولى، فاحرص على إيلاء اهتمام وثيق، لأن هذه الأنماط غالبا ما تعتبر أفضل الممارسات من قبل الناس ذوي الخبرة. هذه العمليات ليست محددة ل سوبفيرزيون. فهي تنطبق على أي نظام تحكم الإصدار. ومع ذلك، قد يساعدك على رؤيتها في مصطلحات سوبفيرزيون.
الافراج عن الفروع.
معظم البرامج لديها دورة حياة نموذجية: رمز، اختبار، الإفراج، تكرار. هناك مشكلتان في هذه العملية. أولا، يحتاج المطورون للحفاظ على كتابة ميزات جديدة في حين أن فرق ضمان الجودة تأخذ وقتا لاختبار إصدارات مستحيلة من البرنامج. لا يمكن أن يتوقف العمل الجديد أثناء اختبار البرنامج. ثانيا، يحتاج الفريق دائما تقريبا لدعم كبار السن، إصدارات الإصدارات من البرامج؛ إذا تم اكتشاف خلل في أحدث التعليمات البرمجية، فمن الأرجح موجود في الإصدارات التي تم إصدارها أيضا، والعملاء سوف ترغب في الحصول على هذا الإصلاح علة دون الحاجة إلى الانتظار لإصدار جديد رئيسي.
وإليك حيث يمكن للتحكم في الإصدار المساعدة. يبدو الإجراء النموذجي كما يلي:
يلتزم المطورون بجميع الأعمال الجديدة للجذع. وتلتزم التغييرات يوما بعد يوم إلى / الجذع: الميزات الجديدة، وإصلاح الأخطاء، وهلم جرا.
يتم نسخ الجذع إلى فرع الإفراج ”. عندما يعتقد الفريق أن البرنامج جاهز للإفراج (مثلا، الإصدار 1.0)، / قد يتم نسخ الجذع إلى /branches/1.0.
وتواصل الفرق العمل بالتوازي. يبدأ فريق واحد اختبار صارم لفرع الإفراج، في حين يواصل فريق آخر عمل جديد (مثلا، للإصدار 2.0) على / الجذع. إذا تم اكتشاف الأخطاء في أي مكان، يتم استصلاح الإصلاحات ذهابا وإيابا حسب الضرورة. ومع ذلك، في مرحلة ما، حتى تلك العملية توقف. الفرع هو “ المجمدة ” للاختبار النهائي الحق قبل الإفراج.
يتم وضع علامة على الفرع وأفرج عنه. عند اكتمال الاختبار، يتم نسخ /branches/1.0 إلى /tags/1.0.0 كقطة مرجعية. يتم تجميع العبوة وإصدارها للعملاء.
يتم الحفاظ على فرع مع مرور الوقت. في حين يستمر العمل على / الجذع للإصدار 2.0، لا تزال إصلاحات الشوائب إلى استدار من / الجذع إلى /branches/1.0. عندما تراكمت ما يكفي من إصلاحات الشوائب، قد تقرر إدارة القيام 1.0.1 الإفراج: /branches/1.0 يتم نسخ إلى /tags/1.0.1، ويتم تعبئتها وإصدارها.
وتكرر هذه العملية برمتها مع نضوج البرنامج: عند اكتمال العمل 2.0، يتم إنشاء فرع الإصدار 2.0 الجديد، واختبارها، الموسومة، وأفرج عنه في نهاية المطاف. بعد بضع سنوات، ينتهي المستودع مع عدد من فروع الافراج في وضع Ђњ صيانة в،، وعدد من العلامات تمثل الإصدارات النهائية التي تم شحنها.
فروع الميزة.
وهناك فرع ميزة هو نوع من الفرع الذي كان المثال المهيمن في هذا الفصل (واحد كنت قد عملت على حين سالي تواصل العمل على / الجذع). انها فرع مؤقت أنشئت للعمل على تغيير معقد دون التدخل في استقرار / الجذع. على عكس فروع الإصدار (التي قد تحتاج إلى دعم إلى الأبد)، ميزة فروع ولدت، وتستخدم لفترة من الوقت، اندمجت إلى الجذع، ومن ثم حذف في نهاية المطاف. لديهم فترة محدودة من الفائدة.
مرة أخرى، تختلف سياسات المشروع بشكل كبير فيما يتعلق بالضبط عندما يكون من المناسب إنشاء فرع ميزة. بعض المشاريع أبدا استخدام فروع ميزة على الإطلاق: يرتكب إلى / الجذع هي مجانية للجميع. ميزة لهذا النظام هو أنه بسيط "لا أحد يحتاج إلى معرفة عن المتفرعة أو الاندماج. العيب هو أن رمز الجذع غالبا ما تكون غير مستقرة أو غير صالحة للاستعمال. مشاريع أخرى تستخدم فروع إلى أقصى الحدود: أي تغيير ملتزم من أي وقت مضى إلى الجذع مباشرة. حتى يتم إنشاء أكثر التغييرات تافهة على فرع قصير العمر، واستعرض بعناية، ودمجها في الجذع. ثم يتم حذف الفرع. هذا النظام يضمن جذع استثنائي وقابل للاستخدام بشكل استثنائي في جميع الأوقات، ولكن على حساب النفقات العامة عملية هائلة.
معظم المشاريع تأخذ نهج منتصف الطريق. وهم يصرون عادة على أن / جذع تجميع وتمرير اختبارات الانحدار في جميع الأوقات. لا يتطلب فرع الميزة إلا عندما يتطلب التغيير عددا كبيرا من عمليات زعزعة الاستقرار. والقاعدة الجيدة هي أن نسأل هذا السؤال: إذا عمل المطور لعدة أيام في عزلة ثم ارتكب التغيير الكبير في آن واحد (بحيث لم يتزعزع الجذع أبدا)، فهل سيكون التغيير كبيرا جدا في المراجعة؟ إذا كان الجواب على هذا السؤال هو Ђњ نعم، Ђќ يجب أن يتم تطوير التغيير على فرع الميزة. كما المطور يرتكب تغييرات تدريجية إلى الفرع، ويمكن مراجعتها بسهولة من قبل أقرانهم.
وأخيرا، هناك مسألة كيفية الحفاظ على أفضل فرع ميزة في Ђњ مزامنة ” مع الجذع مع تقدم العمل. كما ذكرنا سابقا، هناك خطر كبير للعمل على فرع لأسابيع أو أشهر. التغييرات الجذع قد تستمر في صب في، إلى النقطة التي خطين التنمية تختلف كثيرا بحيث قد تصبح كابوسا تحاول دمج فرع العودة إلى الجذع.
ومن الأفضل تجنب هذا الوضع عن طريق دمج التغييرات الجذع بانتظام إلى الفرع. تشكل سياسة: مرة واحدة في الأسبوع، ودمج قيمة الأسبوع الماضي من التغييرات الجذع إلى الفرع.
عندما كنت في نهاية المطاف على استعداد لدمج Ђњ فرع ميزة Ђњ متزامنة العودة إلى الجذع، تبدأ من خلال دمج النهائي من أحدث التغييرات الجذع إلى الفرع. عندما يتم ذلك، أحدث إصدارات الفرع والجذع متطابقة تماما باستثناء التغييرات فرع الخاص بك. ثم دمج مرة أخرى مع الخيار --reintegrate:
طريقة أخرى للتفكير في هذا النمط هو أن المزامنة الأسبوعية من الجذع إلى فرع هو مماثل لتشغيل التحديث سن في نسخة عمل، في حين أن الخطوة دمج النهائية هي مماثلة لتشغيل سن ارتكاب من نسخة العمل. بعد كل شيء، ما هو أيضا نسخة عمل ولكن فرع خاص الضحلة جدا؟ إنه فرع قادر على تخزين تغيير واحد فقط في كل مرة.
كنت تقرأ النسخة التحكم مع التخريب (ل سوبفيرزيون 1.7)، من قبل بن كولينز-سوسمان، بريان W. فيتزباتريك، و C. مايكل بيلاتو.
أفضل الممارسات التخريب.
هذا هو مجموعة سريعة من المبادئ التوجيهية لتحقيق أفضل استخدام للتخريب في عملك تطوير البرمجيات يوما بعد يوم.
استخدام تخطيط مستودع عاقل.
هناك العديد من الطرق لوضع مستودع التخزين الخاص بك. لأن الفروع والعلامات هي أدلة عادية، ستحتاج إلى حسابها في بنية المستودع الخاص بك.
ويوصي مشروع التخريب رسميا بفكرة "جذر المشروع" الذي يمثل نقطة ترسيخ لمشروع ما. A "جذر المشروع" يحتوي بالضبط ثلاثة الدلائل الفرعية: / الجذع، / الفروع، و / العلامات. قد يحتوي مستودع التخزين على جذر مشروع واحد فقط، أو قد يحتوي على عدد منها.
الالتزام بتغييرات منطقية.
عند إجراء تغيير في مستودع التخزين، تأكد من أن التغيير يعكس غرضا واحدا: إصلاح خطأ معين أو إضافة ميزة جديدة أو بعض المهام المحددة. سيؤدي الالتزام إلى إنشاء رقم مراجعة جديد يمكن استخدامه إلى الأبد ك "اسم" للتغيير. يمكنك ذكر رقم المراجعة هذا في قواعد بيانات الأخطاء أو استخدامه كوسيطة لدمج سفن إذا كنت تريد التراجع عن التغيير أو المنفذ إلى فرع آخر.
استخدام تعقب المسألة بحكمة.
حاول إنشاء أكبر عدد ممكن من الروابط ثنائية الاتجاه بين سوبفيرزيون تشانجسسيتس وقاعدة بيانات تتبع المشكلات قدر الإمكان:
إذا كان ذلك ممكنا، راجع معرف قضية محدد في كل رسالة سجل التزام. عند إلحاق المعلومات بمسألة ما (لوصف التقدم أو إغلاق المشكلة)، قم بتسمية رقم (أرقام) المراجعة المسؤول عن التغيير.
يدمج المسار يدويا.
عند ارتكاب نتيجة الدمج، تأكد من كتابة رسالة سجل وصفية توضح ما تم دمجه، مثل:
فهم نسخ العمل المختلطة.
يمكن أن تكون أدلة وملفات نسخة العمل الخاصة بك في مختلف المراجعات "العمل": هذه هي ميزة متعمدة تسمح لك لخلط وتطابق الإصدارات القديمة من الأشياء مع أحدث منها. ولكن هناك بعض الحقائق التي يجب أن تكون على بينة من:
بعد كل سفن ارتكاب، نسخة العمل الخاص بك يحتوي على مراجعات مختلطة. الأشياء التي ارتكبت للتو هي الآن في مراجعة هيد، وكل شيء آخر هو في مراجعة أقدم. بعض المخالفات غير مسموح بها: لا يمكنك الالتزام بحذف ملف أو دليل لا يحتوي على مراجعة عمل ل هيد. لا يمكنك إجراء تغيير خاصية إلى دليل لا يحتوي على مراجعة عمل ل هيد. سوف التحديث سوف تجلب نسخة عملك كامل إلى مراجعة العمل واحد، وهو الحل النموذجي للمشاكل المذكورة في النقطة رقم 2.
التحلي بالصبر مع الملفات الكبيرة.
وهناك ميزة جميلة من التخريب هو أنه من خلال تصميم، ليس هناك حد لحجم الملفات التي يمكن التعامل معها. يتم إرسال الملفات "ستريميلي" في كلا الاتجاهين بين سوبفيرزيون العميل والخادم، وذلك باستخدام كمية صغيرة ثابتة من الذاكرة على كل جانب من الشبكة.
بطبيعة الحال، هناك عدد من القضايا العملية للنظر فيها. على الرغم من أنه لا داعي للقلق بشأن الملفات في النطاق الذي يبلغ حجمه كيلو بايت (على سبيل المثال، ملفات شفرة المصدر النموذجية)، فإن استخدام ملفات أكبر قد يستغرق قدرا هائلا من الزمان والمكان (على سبيل المثال، الملفات التي يبلغ حجمها عشرات أو مئات الميغا بايت.)
بادئ ذي بدء، تذكر أن نسخ العمل سوبفيرزيون الخاص بك بتخزين نسخ البكر من كافة الملفات التي تسيطر عليها النسخة في. svn / نص قاعدة / منطقة. وهذا يعني أن نسخة العمل الخاصة بك يأخذ ما لا يقل عن ضعف مساحة القرص مثل مجموعة البيانات الأصلية. أبعد من ذلك، يتبع العميل سوبفيرزيون خوارزمية (غير قابل للتعديل حاليا) لالتزام الملفات:
نسخ الملف إلى. svn / تمب / (يمكن أن يستغرق بعض الوقت، ويستخدم مؤقتا مساحة إضافية على القرص)) يؤدي فرق ثنائي بين تمبيل والنسخة البكر، أو بين تمبيل وملف فارغ إذا أضيف حديثا. (يمكن أن يستغرق وقتا طويلا جدا لحساب، على الرغم من أن كمية صغيرة فقط من البيانات يمكن في نهاية المطاف أن ترسل عبر الشبكة) يرسل الفرق إلى الخادم، ثم ينتقل تمفيل إلى. svn / نص قاعدة /
حتى في حين لا يوجد حد نظري لحجم الملفات الخاصة بك، سوف تحتاج إلى أن تكون على علم بأن الملفات الكبيرة جدا قد تتطلب قليلا جدا من الانتظار المريض في حين تشوجس العميل الخاص بك بعيدا. يمكنك أن تطمئن، مع ذلك، على عكس كفس، الملفات الكبيرة الخاصة بك لن تعطل الخادم أو تؤثر على المستخدمين الآخرين.
تعرف متى لإنشاء فروع.
هذا هو السؤال الذي يتم مناقشته الساخنة، وأنه يعتمد حقا على ثقافة مشروع البرنامج الخاص بك. بدلا من وصف سياسة عالمية، سنقوم بوصف ثلاثة مشتركة هنا.
نظام نيفر-برانش.
(غالبا ما تستخدم من قبل مشاريع الوليدة التي لا تملك بعد رمز رونابل).
المستخدمين يرتكبون عملهم يوما بعد يوم على / الجذع. أحيانا / الجذع "فواصل" (لا تجميع، أو فشل الاختبارات الوظيفية) عندما يبدأ المستخدم في ارتكاب سلسلة من التغييرات المعقدة.
الايجابيات: سياسة سهلة جدا لمتابعة. المطورين الجدد لديهم حاجز منخفض للدخول. لا أحد يحتاج إلى معرفة كيفية فرع أو دمج.
سلبيات: التنمية الفوضى، رمز يمكن أن تكون غير مستقرة في أي وقت.
ملاحظة جانبية: هذا النوع من التنمية هو أقل خطورة قليلا في التخريب مما كانت عليه في كفس. لأن سوبفيرزيون يرتكب الذرية، فإنه ليس من الممكن للخروج أو تحديث لتلقي "جزئية" ارتكاب بينما شخص آخر هو في عملية ارتكاب.
نظام ألويس-برانش.
(غالبا ما تستخدم من قبل المشاريع التي تفضل الإدارة الثقيلة والإشراف).
كل مستخدم بإنشاء / يعمل على فرع خاص لكل مهمة الترميز. عند اكتمال الترميز، يقوم شخص ما (المبرمج الأصلي، أو النظير، أو المدير) بمراجعة جميع تغييرات الفرع الخاص ودمجها مع / الجذع.
الايجابيات: / الجذع مضمونة لتكون مستقرة للغاية في جميع الأوقات.
سلبيات: يتم عزل المبرمجين بشكل مصطنع عن بعضها البعض، وربما خلق المزيد من الصراعات دمج من الضروري. يتطلب من المستخدمين القيام بالكثير من الدمج الاضافي.
نظام فرع عند الحاجة.
(هذا هو النظام المستخدم من قبل مشروع التخريب.) المستخدمين يرتكبون عملهم يوما بعد يوم على / الجذع. القاعدة رقم 1: / الجذع يجب تجميع وتمرير اختبارات الانحدار في جميع الأوقات. والمذنبون الذين ينتهكون هذه القاعدة مهينون علنا. القاعدة رقم 2: يجب ألا يكون التزام واحد (تغييرات) كبيرا بحيث لا يشجع استعراض الأقران. القاعدة رقم 3: إذا تدخلت القاعدتان رقم 1 و 2 في صراع (أي أنه من المستحيل إجراء سلسلة من الإرتباطات الصغيرة دون تعطيل الجذع)، عندئذ يجب على المستخدم إنشاء فرع والالتزام بسلسلة من التغييرات الصغيرة هناك. وهذا يسمح استعراض الأقران دون تعطيل استقرار / الجذع.
الايجابيات: / الجذع مضمونة لتكون مستقرة في جميع الأوقات. مشاحنات المتفرعة / دمج نادرة إلى حد ما.
سلبيات: يضيف قليلا من العبء على عمل المستخدمين اليومي: يجب تجميع واختبار قبل كل ارتكاب.
أفضل ممارسات إستراتيجية التخريب الفرعي
الحصول على فيا أب ستور قراءة هذه المشاركة في التطبيق لدينا!
أفضل استراتيجية المتفرعة عند القيام التكامل المستمر؟
ما هي أفضل استراتيجية متفرعة لاستخدامها عندما تريد أن تفعل التكامل المستمر؟
الافراج عن فرع: تطوير على الجذع، والحفاظ على فرع لكل إصدار. ميزة المتفرعة: تطوير كل ميزة في فرع منفصل، دمج فقط مرة واحدة مستقرة.
هل من المنطقي استخدام كل من هذه الاستراتيجيات معا؟ كما هو الحال في، كنت فرع لكل إصدار ولكن أيضا فرع لميزات كبيرة؟ هل أحد هذه الاستراتيجيات يتشابه بشكل أفضل مع التكامل المستمر؟ هل استخدام التكامل المستمر حتى معنى عند استخدام جذع غير مستقر؟
11 أجوبة.
تعتمد الإجابة على حجم فريقك وجودة التحكم في المصدر والقدرة على دمج مجموعات التغيير المعقدة بشكل صحيح. على سبيل المثال في كامل تحكم مصدر فرع مثل كفس أو سفن دمج يمكن أن يكون صعبا وكنت قد يكون أفضل حالا مع النموذج الأول، في حين إذا كان استخدام نظام أكثر تعقيدا مثل عب كليركيس ومع حجم أكبر من فريق هل يمكن أن يكون أفضل من مع الثانية نموذج أو مزيج من الاثنين.
أنا شخصيا سوف فصل نموذج فرع الميزة، حيث تم تطوير كل ميزة رئيسية على فرع منفصل، مع المهام الفرعية لكل تغيير يقوم به المطور الفردية. كما تستقر الميزات أنها تحصل على دمجها إلى الجذع، والتي يمكنك الاحتفاظ مستقرة بشكل معقول وتمرير جميع اختبارات الانحدار في جميع الأوقات. كما كنت بالقرب من نهاية دورة الإصدار الخاص بك وجميع فروع دمج، يمكنك استقرار وفرع فرع نظام الإصدار الذي تقوم به فقط إصلاحات الشوائب الاستقرار والرجعية الضرورية، في حين يتم استخدام الجذع لتطوير الإصدار التالي وأنت مرة أخرى فرع قبالة عن فروع ميزة جديدة. وما إلى ذلك وهلم جرا.
هذه الطريقة جذع يحتوي دائما على أحدث رمز، ولكن يمكنك إدارة للحفاظ على استقرار معقول، وخلق تسميات مستقرة (العلامات) على التغييرات الرئيسية وميزات الميزة، فروع ميزة هي تطور يسير بخطى سريعة مع التكامل المستمر والفرعية المهام الفرعية يمكن أن تكون في كثير من الأحيان تحديث من فرع ميزة للحفاظ على كل شخص يعمل على نفس الميزة في المزامنة، في حين لا تؤثر في وقت واحد فرق أخرى تعمل على ميزات مختلفة.
في الوقت نفسه لديك من خلال التاريخ مجموعة من فروع الإفراج، حيث يمكنك توفير الخلفيات والدعم وبوجفيكسيس لعملائك الذين لأي سبب من الأسباب البقاء على الإصدارات السابقة من المنتج الخاص بك أو حتى مجرد أحدث الإصدار الذي تم إصداره. كما هو الحال مع الجذع، كنت لا الإعداد التكامل المستمر على فروع الإفراج، فهي متكاملة بعناية على اجتياز جميع اختبارات الانحدار وغيرها من مراقبة الجودة الإصدار.
إذا لسبب ما اثنين من الميزات هي تعتمد على بعضها البعض وتحتاج إلى تغييرات من قبل بعضها البعض، يمكنك النظر إما لتطوير على حد سواء في نفس الفرع ميزة أو تتطلب الميزات لدمج بانتظام أجزاء مستقرة من التعليمات البرمجية إلى الجذع ثم تحديث التغييرات من الجذع لتبادل رمز بين فروع الجذع. أو إذا كنت بحاجة إلى عزل هاتين الميزتين من الآخرين، يمكنك إنشاء فرع مشترك قبالة التي تقوم بتفرع تلك الفروع الميزة والتي يمكنك استخدامها لتبادل التعليمات البرمجية بين الميزات.
النموذج أعلاه لا يجعل من المنطقي بكثير مع فرق تحت 50 المطورين ونظام التحكم في المصدر دون فروع متفرق والقدرة على الاندماج السليم مثل كفس أو سفن، والتي من شأنها أن تجعل فقط هذا النموذج كله كابوس لإعداد وإدارة ودمج.
أجد موضوع مثير للاهتمام حقا لأنني تعتمد بشدة على الفروع على عملي اليومي.
أتذكر مارك شلوورث يقترح نموذجا حول الحفاظ على الفرع الرئيسي البكر في حين تتجاوز سي التقليدية. نشرت لي حول هذا الموضوع هنا. منذ أنا على دراية التحكم كروز، أنا أيضا المدونات حول فروع المهمة و سي هنا. انها خطوة بخطوة تعليمي شرح كيفية القيام بذلك مع سم البلاستيك. وأخيرا، وجدت بعض الموضوعات حول سي (وربما يتحدث عن المتفرعة) في كتاب دوفال على سي مثيرة جدا للاهتمام أيضا.
نأمل أن تجد الروابط مثيرة للاهتمام.
أنا شخصيا أجد أنه من الأنظف أن يكون جذع مستقر والقيام ميزة المتفرعة. وبهذه الطريقة، واختبار وما شابه ذلك الحصول على البقاء على "نسخة" واحدة وتحديث من الجذع لاختبار أي ميزة أن رمز الكامل.
أيضا إذا كان العديد من المطورين يعملون على ميزات مختلفة، فإنها يمكن أن يكون كل فروع منفصلة الخاصة بهم، ثم دمج جذع عند الانتهاء من ذلك وإرسال ميزة لاختبارها دون اختبار الحاجة إلى التحول إلى فروع متعددة لاختبار ميزات مختلفة.
كما مكافأة إضافية، وهناك بعض مستوى اختبار التكامل التي تأتي تلقائيا.
وأعتقد أن أي من الاستراتيجية يمكن استخدامها مع التطوير المستمر بشرط أن تتذكر واحدة من المبادئ الرئيسية التي تلتزم كل مطور لجذع / الخط الرئيسي كل يوم.
لقد تم القيام ببعض القراءة من هذا الكتاب على سي والكتاب جعل تشير إلى أن المتفرعة من قبل الافراج عن استراتيجية المتفرعة المفضل لديهم. علي ان اوافق. المتفرعة من ميزة لا معنى لي عند استخدام سي.
سأحاول وشرح لماذا أنا أفكر بهذه الطريقة. ويقول ثلاثة مطوري كل اتخاذ فرع للعمل على ميزة. ستستغرق كل ميزة عدة أيام أو أسابيع حتى تنتهي. لضمان اندماج الفريق بشكل مستمر يجب أن تلتزم الفرع الرئيسي مرة واحدة على الأقل في اليوم. بمجرد أن تبدأ في القيام بذلك فإنها تفقد فائدة إنشاء فرع الميزة. لم تعد تغييراتهم منفصلة عن جميع التغييرات الأخرى للمطور. هذا هو الحال، لماذا تهتم لخلق فروع ميزة في المقام الأول؟
يتطلب استخدام المتفرعة من قبل الإصدار أقل بكثير دمج بين الفروع (دائما شيء جيد)، يضمن أن جميع التغييرات الحصول على أساب متكامل و (إذا فعلت بشكل صحيح) يضمن قاعدة التعليمات البرمجية الخاصة بك في دائما على استعداد للافراج عنهم. الجانب إلى المتفرعة من قبل الإفراج هو أن عليك أن تكون أكثر حذرا إلى حد كبير مع التغييرات. مثلا إعادة بيع كبيرة يجب أن يتم بشكل متزايد، وإذا كنت قد قمت بالفعل دمج ميزة جديدة التي لا تريد في الإصدار التالي ثم يجب أن تكون مخفية باستخدام نوع من ميزة تبديل آلية.
هناك أكثر من رأي واحد حول هذا الموضوع. هنا هو مشاركة بلوق وهو الموالية ميزة المتفرعة مع سي.
الافراج عن فروع مفيدة جدا، وحتى مطلقة تماما، إذا كنت بحاجة إلى الحفاظ على عدة إصدارات من التطبيق الخاص بك.
ميزة فروع أيضا مريحة للغاية، لا سيما إذا كان مطور واحد يحتاج إلى العمل على تغيير كبير، في حين أن آخرين لا يزالون الافراج عن الإصدارات الجديدة.
لذلك بالنسبة لي باستخدام كلتا الآليتين هي استراتيجية جيدة جدا.
وصلة مثيرة للاهتمام من كتاب سفن.
لقد جئت مؤخرا إلى مثل هذا النموذج عند استخدام جيت. على الرغم من أنه تم وضع علامة على سؤالك "سفن"، قد تكون لا تزال قادرا على الاستفادة من ذلك.
التكامل المستمر يمكن أن يحدث إلى حد ما في فرع "تطوير" (أو ما تسمونه) في هذا النموذج، على الرغم من وجود فروع طويلة المدى تشغيل الإصدارات المستقبلية لن تجعل من جامدة جدا للنظر في كل تغيير يحدث لرمز في مكان ما. يبقى السؤال، ما إذا كنت تريد حقا ذلك. مارتن فاولر يفعل.
يجب أن لا يكون التكامل المستمر أي نوع من العوامل في تحديد استراتيجية التفرع الخاص بك. يجب اختيار النهج المتفرع الخاص بك على أساس فريقك، ونظام قيد التطوير والأدوات المتاحة لك.
وقد قلت ذلك .
ليس هناك سبب لعدم استخدام سي في كل من النهج التي تصف تلك النهج تعمل بشكل جيد جدا في الجمع بين أي من العملين "أفضل" من سي الأخرى يجعل الشعور الكلي مع جذع غير مستقر.
تم الإجابة على كل هذا في السؤال الرابع على الصفحة التي أخذت الرسوم البيانية من: blogs. collab / سوبفيرزيون / 2007/11 / المتفرعة سترات /
طالما أنك تفهم المبادئ، يمكنك دائما إعادة اختراع أفضل الممارسات. إذا كنت لا تفهم المبادئ، فإن أفضل الممارسات سوف يأخذك قبل أن ينهار بسبب بعض المتطلبات الخارجية المتضاربة.
اقرأ الرابط. بمجرد الحصول على الأساسيات، قراءة المقال التالي من قبل هنريك كنيبرج الموقر. وسوف تساعدك على ربط النموذج الرئيسي مع التكامل المستمر.
عندما بدأنا فريقنا ورثنا استراتيجية قائمة على الإصدار من البائع التي وضعت في الأصل النظام كنا على وشك الحصول على المسؤول عن. عملت حتى الوقت الذي طلب فيه عملائنا أن العديد من الميزات المتقدمة لا ينبغي أن تدرج في إصدار (f. y.i.
خطوط 250K من التعليمات البرمجية،
2500 الملفات، سكروم مع زب سدلك).
ثم بدأنا النظر في الفروع القائمة على ميزة. هذا عمل أيضا لفترة من الوقت - مثل 2 أشهر حتى النقطة أدركنا أن عملية اختبار الانحدار لدينا سوف يستغرق أكثر من 2 أسابيع التي جنبا إلى جنب مع عدم اليقين من ما سيصدر صدر خلق إزعاج كبير.
وجاء "مسمار في التابوت" النهائي من استراتيجيات سك نقية عندما قررنا أنه ينبغي أن يكون 1. الجذع مستقرة و 2. يجب أن يحتوي الإنتاج ست، وات، والانحدار اختبار بيناريز (وليس فقط مصدر - أعتقد سيسي)
وهذا يقودنا إلى وضع استراتيجية هي مزيج بين ميزة واستراتيجيات سك القائمة على إطلاق سراح.
لذلك لدينا جذع. كل سباق نحن فرع فرع العدو (لغير الناس رشيقة - سباق هو مجرد جهد التنمية محاصر الوقت مع مخرجات متغيرة على أساس التعقيد.) من فرع العدو نخلق فروع ميزة والتنمية الموازية يبدأ فيها. وبمجرد الانتهاء من الميزات واختبار النظام، ونحن نتلقى نية لنشرها، يتم دمجها إلى فرع العدو - بعض قد تطفو عبر العديد من السباقات، وعادة ما تكون أكثر تعقيدا. مرة واحدة في سباق بالقرب من نهايته والميزات كاملة. نحن "إعادة تسمية" فرع العدو إلى "الانحدار" (وهذا يسمح كروزيكونترول لاستلامه من دون أي إعادة تشكيل) ثم يبدأ الانحدار / اختبار التكامل على إير بناء سيسي. عندما يتم ذلك كله، فإنه يذهب في الإنتاج.
وباختصار، يتم استخدام الفروع القائمة على ميزة لتطوير واختبار النظام ووظائف وات. فرع العدو (حقا فرع الإفراج) يستخدم لدمج انتقائي الميزات على الطلب والتكامل الاختبار.
الآن هنا هو السؤال للمجتمع - نحن من الواضح أن تواجه مشكلة في أداء التكامل المستمر بسبب حقيقة أن التنمية تحدث على العديد من الفروع وإعادة تشكيل النفقات العامة من كروزيكونترول. يمكن لشخص ما اقتراح والمشورة؟
الطريقة التي أرى أنها تريد أن يكون مجموعة محدودة من الفروع حيث يمكنك التركيز. نظرا لأنك تريد إجراء اختبارات، ومقاييس جودة الشفرة، والعديد من الأمور المثيرة للاهتمام لتشغيلها مع عمليات الإنشاء، فإن وجود عدد كبير جدا من التقارير سيجعلك تفوت المعلومات.
عندما وماذا لفرع، وعادة ما يعتمد على حجم الفريق وحجم الميزات التي يجري تطويرها. لا أعتقد أن هناك قاعدة ذهبية. تأكد من استخدام إستراتيجية يمكنك من خلالها الحصول على التعليقات في وقت مبكر / في كثير من الأحيان، والتي تتضمن تضمين الجودة من بداية الميزات. نوعية بت، يعني أنه كما كنت أتمتة كما فريق يتطور، إذا كنت فرع لميزة كبيرة مجموعة فريق هو بناء، لديك فلدي يكون لها جودة المشاركة في الفريق أيضا.
ملاحظة: أين حصلت على تلك المراجع؟ - لا يشعر أن تلك الرسوم البيانية تمثل جميع الخيارات.
تحديث 1: توسيع لماذا قلت انها ليست قاعدة ذهبية. أساسا لفرق صغيرة نسبيا لقد وجدت أنه من الأفضل باستخدام النهج الذي هو مزيج. يتم إنشاء فروع ميزة إذا كان شيئا طويلا وجزء من الفريق سيستمر إضافة ميزات أصغر.
أعتقد أن الأدوات التي تستخدمها عامل كبير هنا.
إذا كنت تستخدم التخريب، التمسك الخيار 1 والافراج عن الفروع. إذا كنت تستخدم جيت، الخيار 2 سوف تعمل بشكل جيد بالنسبة لك.
فيلكلود المدونة.
أنظمة التحكم في الإصدار تلعب دورا حيويا في نجاح فريق تطوير البرمجيات. ويهدف هذا بلوق لتوفير بسيطة المتفرعة ودمج استراتيجية لإدارة التعليمات البرمجية في بيئة تطوير فريق يسير بخطى سريعة.
متى تحتاج المتفرعة؟
قد تحتاج إلى اعتماد المتفرعة في العديد من السيناريوهات المختلفة. دعونا نفترض أن على أساس يومي يمكنك استخدام منهجيات رشيقة مثل البرمجة المتطرفة أو سكروم وكنت قد أصدرت أخيرا مشروع معقد معقول مع الإصدار 1.0.0.0. زوجين من الأيام بعد الإفراج عنهم، تحصل على طلب للحصول على ميزة جديدة يجب أن تذهب كما الإصدار 1.1.0.0. كنت تصور ان الامر سيستغرق بضعة أسابيع للحصول على تلك الميزة مشفرة واختبارها وأفرج عنه. وفي الوقت نفسه، يتم طلب تعديلات بسيطة والبقع على أساس يومي في الإصدار 1.0.0.0.
في الأساس، مع احتياجات الأعمال المتغيرة، يلزم منك إجراء عملية نشر كل يوم أو نحو ذلك، أي أن دورة النشر تستغرق يومين أو أقل.
مع فريق من 10 المطورين سيكون كابوسا في غياب استراتيجية المتفرعة المناسبة.
الجذع، الفرع، والعلامة هي الأقسام الرئيسية 3 في مستودع التخريب.
يتم الحفاظ على رمز في الجذع دائما أقرب إلى الافراج عن حالة ممكن. يجب على أي مطور يقوم بإجراء تغييرات على الجذع أن يكون مؤكدا تماما أنه يمكن ترميزه أو اختباره وجاهز للنشر في غضون يومين (يمكن أن يختلف تبعا لطول دورة النشر). إذا استغرق الأمر أكثر من يومين، لا يسمح لهم بتغيير الرمز مباشرة في الجذع. لديهم لإنشاء فرع.
يجب على كل مطور إنشاء فرع خاص به إذا كانت شفراته ستستغرق وقتا أطول للبرامج من دورة النشر العادية. ومن مسؤولية المطور بانتظام (الإطار الزمني يعتمد على بيئة التنمية الخاصة بك) دمج التغييرات من الجذع إلى فرعه.
إنشاء فرع ميزة إذا كان 2 أو أكثر من المطورين ذاهبون للعمل على ميزة جديدة من شأنها أن تأخذ وقتا طويلا لإكمال. ومن مسؤولية الفريق يؤدي إلى دمج التغييرات من الجذع إلى هذا الفرع ميزة على أساس منتظم.
فمن المفيد دائما لدمج التغييرات من الجذع في كثير من الأحيان. لأنه بعد بضعة أيام الصراع بين النسخة الجذع والفرع نسخة يمكن الخروج من جهة ودمج سيكون عمليا مستحيلا.
عندما فرع المطور أو فرع ميزة جاهزة للإفراج عنهم، دمج التغييرات مرة أخرى من الفرع إلى الجذع.
وأخيرا، تذكر أنه لا توجد استراتيجية مثالية للتفرع والاندماج. ذلك إلى حد كبير يعتمد على بيئة التنمية فريدة من نوعها. إذا كان لديك أي استراتيجية أخرى، أود أن أسمع عن ذلك.
الحصول على فيا أب ستور قراءة هذه المشاركة في التطبيق لدينا!
أفضل استراتيجية المتفرعة عند القيام التكامل المستمر؟
ما هي أفضل استراتيجية متفرعة لاستخدامها عندما تريد أن تفعل التكامل المستمر؟
الافراج عن فرع: تطوير على الجذع، والحفاظ على فرع لكل إصدار. ميزة المتفرعة: تطوير كل ميزة في فرع منفصل، دمج فقط مرة واحدة مستقرة.
هل من المنطقي استخدام كل من هذه الاستراتيجيات معا؟ كما هو الحال في، كنت فرع لكل إصدار ولكن أيضا فرع لميزات كبيرة؟ هل أحد هذه الاستراتيجيات يتشابه بشكل أفضل مع التكامل المستمر؟ هل استخدام التكامل المستمر حتى معنى عند استخدام جذع غير مستقر؟
11 أجوبة.
تعتمد الإجابة على حجم فريقك وجودة التحكم في المصدر والقدرة على دمج مجموعات التغيير المعقدة بشكل صحيح. على سبيل المثال في كامل تحكم مصدر فرع مثل كفس أو سفن دمج يمكن أن يكون صعبا وكنت قد يكون أفضل حالا مع النموذج الأول، في حين إذا كان استخدام نظام أكثر تعقيدا مثل عب كليركيس ومع حجم أكبر من فريق هل يمكن أن يكون أفضل من مع الثانية نموذج أو مزيج من الاثنين.
أنا شخصيا سوف فصل نموذج فرع الميزة، حيث تم تطوير كل ميزة رئيسية على فرع منفصل، مع المهام الفرعية لكل تغيير يقوم به المطور الفردية. كما تستقر الميزات أنها تحصل على دمجها إلى الجذع، والتي يمكنك الاحتفاظ مستقرة بشكل معقول وتمرير جميع اختبارات الانحدار في جميع الأوقات. كما كنت بالقرب من نهاية دورة الإصدار الخاص بك وجميع فروع دمج، يمكنك استقرار وفرع فرع نظام الإصدار الذي تقوم به فقط إصلاحات الشوائب الاستقرار والرجعية الضرورية، في حين يتم استخدام الجذع لتطوير الإصدار التالي وأنت مرة أخرى فرع قبالة عن فروع ميزة جديدة. وما إلى ذلك وهلم جرا.
هذه الطريقة جذع يحتوي دائما على أحدث رمز، ولكن يمكنك إدارة للحفاظ على استقرار معقول، وخلق تسميات مستقرة (العلامات) على التغييرات الرئيسية وميزات الميزة، فروع ميزة هي تطور يسير بخطى سريعة مع التكامل المستمر والفرعية المهام الفرعية يمكن أن تكون في كثير من الأحيان تحديث من فرع ميزة للحفاظ على كل شخص يعمل على نفس الميزة في المزامنة، في حين لا تؤثر في وقت واحد فرق أخرى تعمل على ميزات مختلفة.
في الوقت نفسه لديك من خلال التاريخ مجموعة من فروع الإفراج، حيث يمكنك توفير الخلفيات والدعم وبوجفيكسيس لعملائك الذين لأي سبب من الأسباب البقاء على الإصدارات السابقة من المنتج الخاص بك أو حتى مجرد أحدث الإصدار الذي تم إصداره. كما هو الحال مع الجذع، كنت لا الإعداد التكامل المستمر على فروع الإفراج، فهي متكاملة بعناية على اجتياز جميع اختبارات الانحدار وغيرها من مراقبة الجودة الإصدار.
إذا لسبب ما اثنين من الميزات هي تعتمد على بعضها البعض وتحتاج إلى تغييرات من قبل بعضها البعض، يمكنك النظر إما لتطوير على حد سواء في نفس الفرع ميزة أو تتطلب الميزات لدمج بانتظام أجزاء مستقرة من التعليمات البرمجية إلى الجذع ثم تحديث التغييرات من الجذع لتبادل رمز بين فروع الجذع. أو إذا كنت بحاجة إلى عزل هاتين الميزتين من الآخرين، يمكنك إنشاء فرع مشترك قبالة التي تقوم بتفرع تلك الفروع الميزة والتي يمكنك استخدامها لتبادل التعليمات البرمجية بين الميزات.
النموذج أعلاه لا يجعل من المنطقي بكثير مع فرق تحت 50 المطورين ونظام التحكم في المصدر دون فروع متفرق والقدرة على الاندماج السليم مثل كفس أو سفن، والتي من شأنها أن تجعل فقط هذا النموذج كله كابوس لإعداد وإدارة ودمج.
أجد موضوع مثير للاهتمام حقا لأنني تعتمد بشدة على الفروع على عملي اليومي.
أتذكر مارك شلوورث يقترح نموذجا حول الحفاظ على الفرع الرئيسي البكر في حين تتجاوز سي التقليدية. نشرت لي حول هذا الموضوع هنا. منذ أنا على دراية التحكم كروز، أنا أيضا المدونات حول فروع المهمة و سي هنا. انها خطوة بخطوة تعليمي شرح كيفية القيام بذلك مع سم البلاستيك. وأخيرا، وجدت بعض الموضوعات حول سي (وربما يتحدث عن المتفرعة) في كتاب دوفال على سي مثيرة جدا للاهتمام أيضا.
نأمل أن تجد الروابط مثيرة للاهتمام.
أنا شخصيا أجد أنه من الأنظف أن يكون جذع مستقر والقيام ميزة المتفرعة. وبهذه الطريقة، واختبار وما شابه ذلك الحصول على البقاء على "نسخة" واحدة وتحديث من الجذع لاختبار أي ميزة أن رمز الكامل.
أيضا إذا كان العديد من المطورين يعملون على ميزات مختلفة، فإنها يمكن أن يكون كل فروع منفصلة الخاصة بهم، ثم دمج جذع عند الانتهاء من ذلك وإرسال ميزة لاختبارها دون اختبار الحاجة إلى التحول إلى فروع متعددة لاختبار ميزات مختلفة.
كما مكافأة إضافية، وهناك بعض مستوى اختبار التكامل التي تأتي تلقائيا.
وأعتقد أن أي من الاستراتيجية يمكن استخدامها مع التطوير المستمر بشرط أن تتذكر واحدة من المبادئ الرئيسية التي تلتزم كل مطور لجذع / الخط الرئيسي كل يوم.
لقد تم القيام ببعض القراءة من هذا الكتاب على سي والكتاب جعل تشير إلى أن المتفرعة من قبل الافراج عن استراتيجية المتفرعة المفضل لديهم. علي ان اوافق. المتفرعة من ميزة لا معنى لي عند استخدام سي.
سأحاول وشرح لماذا أنا أفكر بهذه الطريقة. ويقول ثلاثة مطوري كل اتخاذ فرع للعمل على ميزة. ستستغرق كل ميزة عدة أيام أو أسابيع حتى تنتهي. لضمان اندماج الفريق بشكل مستمر يجب أن تلتزم الفرع الرئيسي مرة واحدة على الأقل في اليوم. بمجرد أن تبدأ في القيام بذلك فإنها تفقد فائدة إنشاء فرع الميزة. لم تعد تغييراتهم منفصلة عن جميع التغييرات الأخرى للمطور. هذا هو الحال، لماذا تهتم لخلق فروع ميزة في المقام الأول؟
يتطلب استخدام المتفرعة من قبل الإصدار أقل بكثير دمج بين الفروع (دائما شيء جيد)، يضمن أن جميع التغييرات الحصول على أساب متكامل و (إذا فعلت بشكل صحيح) يضمن قاعدة التعليمات البرمجية الخاصة بك في دائما على استعداد للافراج عنهم. الجانب إلى المتفرعة من قبل الإفراج هو أن عليك أن تكون أكثر حذرا إلى حد كبير مع التغييرات. مثلا إعادة بيع كبيرة يجب أن يتم بشكل متزايد، وإذا كنت قد قمت بالفعل دمج ميزة جديدة التي لا تريد في الإصدار التالي ثم يجب أن تكون مخفية باستخدام نوع من ميزة تبديل آلية.
هناك أكثر من رأي واحد حول هذا الموضوع. هنا هو مشاركة بلوق وهو الموالية ميزة المتفرعة مع سي.
الافراج عن فروع مفيدة جدا، وحتى مطلقة تماما، إذا كنت بحاجة إلى الحفاظ على عدة إصدارات من التطبيق الخاص بك.
ميزة فروع أيضا مريحة للغاية، لا سيما إذا كان مطور واحد يحتاج إلى العمل على تغيير كبير، في حين أن آخرين لا يزالون الافراج عن الإصدارات الجديدة.
لذلك بالنسبة لي باستخدام كلتا الآليتين هي استراتيجية جيدة جدا.
وصلة مثيرة للاهتمام من كتاب سفن.
لقد جئت مؤخرا إلى مثل هذا النموذج عند استخدام جيت. على الرغم من أنه تم وضع علامة على سؤالك "سفن"، قد تكون لا تزال قادرا على الاستفادة من ذلك.
التكامل المستمر يمكن أن يحدث إلى حد ما في فرع "تطوير" (أو ما تسمونه) في هذا النموذج، على الرغم من وجود فروع طويلة المدى تشغيل الإصدارات المستقبلية لن تجعل من جامدة جدا للنظر في كل تغيير يحدث لرمز في مكان ما. يبقى السؤال، ما إذا كنت تريد حقا ذلك. مارتن فاولر يفعل.
يجب أن لا يكون التكامل المستمر أي نوع من العوامل في تحديد استراتيجية التفرع الخاص بك. يجب اختيار النهج المتفرع الخاص بك على أساس فريقك، ونظام قيد التطوير والأدوات المتاحة لك.
وقد قلت ذلك .
ليس هناك سبب لعدم استخدام سي في كل من النهج التي تصف تلك النهج تعمل بشكل جيد جدا في الجمع بين أي من العملين "أفضل" من سي الأخرى يجعل الشعور الكلي مع جذع غير مستقر.
تم الإجابة على كل هذا في السؤال الرابع على الصفحة التي أخذت الرسوم البيانية من: blogs. collab / سوبفيرزيون / 2007/11 / المتفرعة سترات /
طالما أنك تفهم المبادئ، يمكنك دائما إعادة اختراع أفضل الممارسات. إذا كنت لا تفهم المبادئ، فإن أفضل الممارسات سوف يأخذك قبل أن ينهار بسبب بعض المتطلبات الخارجية المتضاربة.
اقرأ الرابط. بمجرد الحصول على الأساسيات، قراءة المقال التالي من قبل هنريك كنيبرج الموقر. وسوف تساعدك على ربط النموذج الرئيسي مع التكامل المستمر.
عندما بدأنا فريقنا ورثنا استراتيجية قائمة على الإصدار من البائع التي وضعت في الأصل النظام كنا على وشك الحصول على المسؤول عن. عملت حتى الوقت الذي طلب فيه عملائنا أن العديد من الميزات المتقدمة لا ينبغي أن تدرج في إصدار (f. y.i.
خطوط 250K من التعليمات البرمجية،
2500 الملفات، سكروم مع زب سدلك).
ثم بدأنا النظر في الفروع القائمة على ميزة. هذا عمل أيضا لفترة من الوقت - مثل 2 أشهر حتى النقطة أدركنا أن عملية اختبار الانحدار لدينا سوف يستغرق أكثر من 2 أسابيع التي جنبا إلى جنب مع عدم اليقين من ما سيصدر صدر خلق إزعاج كبير.
وجاء "مسمار في التابوت" النهائي من استراتيجيات سك نقية عندما قررنا أنه ينبغي أن يكون 1. الجذع مستقرة و 2. يجب أن يحتوي الإنتاج ست، وات، والانحدار اختبار بيناريز (وليس فقط مصدر - أعتقد سيسي)
وهذا يقودنا إلى وضع استراتيجية هي مزيج بين ميزة واستراتيجيات سك القائمة على إطلاق سراح.
لذلك لدينا جذع. كل سباق نحن فرع فرع العدو (لغير الناس رشيقة - سباق هو مجرد جهد التنمية محاصر الوقت مع مخرجات متغيرة على أساس التعقيد.) من فرع العدو نخلق فروع ميزة والتنمية الموازية يبدأ فيها. وبمجرد الانتهاء من الميزات واختبار النظام، ونحن نتلقى نية لنشرها، يتم دمجها إلى فرع العدو - بعض قد تطفو عبر العديد من السباقات، وعادة ما تكون أكثر تعقيدا. مرة واحدة في سباق بالقرب من نهايته والميزات كاملة. نحن "إعادة تسمية" فرع العدو إلى "الانحدار" (وهذا يسمح كروزيكونترول لاستلامه من دون أي إعادة تشكيل) ثم يبدأ الانحدار / اختبار التكامل على إير بناء سيسي. عندما يتم ذلك كله، فإنه يذهب في الإنتاج.
وباختصار، يتم استخدام الفروع القائمة على ميزة لتطوير واختبار النظام ووظائف وات. فرع العدو (حقا فرع الإفراج) يستخدم لدمج انتقائي الميزات على الطلب والتكامل الاختبار.
الآن هنا هو السؤال للمجتمع - نحن من الواضح أن تواجه مشكلة في أداء التكامل المستمر بسبب حقيقة أن التنمية تحدث على العديد من الفروع وإعادة تشكيل النفقات العامة من كروزيكونترول. يمكن لشخص ما اقتراح والمشورة؟
الطريقة التي أرى أنها تريد أن يكون مجموعة محدودة من الفروع حيث يمكنك التركيز. نظرا لأنك تريد إجراء اختبارات، ومقاييس جودة الشفرة، والعديد من الأمور المثيرة للاهتمام لتشغيلها مع عمليات الإنشاء، فإن وجود عدد كبير جدا من التقارير سيجعلك تفوت المعلومات.
عندما وماذا لفرع، وعادة ما يعتمد على حجم الفريق وحجم الميزات التي يجري تطويرها. لا أعتقد أن هناك قاعدة ذهبية. تأكد من استخدام إستراتيجية يمكنك من خلالها الحصول على التعليقات في وقت مبكر / في كثير من الأحيان، والتي تتضمن تضمين الجودة من بداية الميزات. نوعية بت، يعني أنه كما كنت أتمتة كما فريق يتطور، إذا كنت فرع لميزة كبيرة مجموعة فريق هو بناء، لديك فلدي يكون لها جودة المشاركة في الفريق أيضا.
ملاحظة: أين حصلت على تلك المراجع؟ - لا يشعر أن تلك الرسوم البيانية تمثل جميع الخيارات.
تحديث 1: توسيع لماذا قلت انها ليست قاعدة ذهبية. أساسا لفرق صغيرة نسبيا لقد وجدت أنه من الأفضل باستخدام النهج الذي هو مزيج. يتم إنشاء فروع ميزة إذا كان شيئا طويلا وجزء من الفريق سيستمر إضافة ميزات أصغر.
أعتقد أن الأدوات التي تستخدمها عامل كبير هنا.
إذا كنت تستخدم التخريب، التمسك الخيار 1 والافراج عن الفروع. إذا كنت تستخدم جيت، الخيار 2 سوف تعمل بشكل جيد بالنسبة لك.
فيلكلود المدونة.
أنظمة التحكم في الإصدار تلعب دورا حيويا في نجاح فريق تطوير البرمجيات. ويهدف هذا بلوق لتوفير بسيطة المتفرعة ودمج استراتيجية لإدارة التعليمات البرمجية في بيئة تطوير فريق يسير بخطى سريعة.
متى تحتاج المتفرعة؟
قد تحتاج إلى اعتماد المتفرعة في العديد من السيناريوهات المختلفة. دعونا نفترض أن على أساس يومي يمكنك استخدام منهجيات رشيقة مثل البرمجة المتطرفة أو سكروم وكنت قد أصدرت أخيرا مشروع معقد معقول مع الإصدار 1.0.0.0. زوجين من الأيام بعد الإفراج عنهم، تحصل على طلب للحصول على ميزة جديدة يجب أن تذهب كما الإصدار 1.1.0.0. كنت تصور ان الامر سيستغرق بضعة أسابيع للحصول على تلك الميزة مشفرة واختبارها وأفرج عنه. وفي الوقت نفسه، يتم طلب تعديلات بسيطة والبقع على أساس يومي في الإصدار 1.0.0.0.
في الأساس، مع احتياجات الأعمال المتغيرة، يلزم منك إجراء عملية نشر كل يوم أو نحو ذلك، أي أن دورة النشر تستغرق يومين أو أقل.
مع فريق من 10 المطورين سيكون كابوسا في غياب استراتيجية المتفرعة المناسبة.
الجذع، الفرع، والعلامة هي الأقسام الرئيسية 3 في مستودع التخريب.
يتم الحفاظ على رمز في الجذع دائما أقرب إلى الافراج عن حالة ممكن. يجب على أي مطور يقوم بإجراء تغييرات على الجذع أن يكون مؤكدا تماما أنه يمكن ترميزه أو اختباره وجاهز للنشر في غضون يومين (يمكن أن يختلف تبعا لطول دورة النشر). إذا استغرق الأمر أكثر من يومين، لا يسمح لهم بتغيير الرمز مباشرة في الجذع. لديهم لإنشاء فرع.
يجب على كل مطور إنشاء فرع خاص به إذا كانت شفراته ستستغرق وقتا أطول للبرامج من دورة النشر العادية. ومن مسؤولية المطور بانتظام (الإطار الزمني يعتمد على بيئة التنمية الخاصة بك) دمج التغييرات من الجذع إلى فرعه.
إنشاء فرع ميزة إذا كان 2 أو أكثر من المطورين ذاهبون للعمل على ميزة جديدة من شأنها أن تأخذ وقتا طويلا لإكمال. ومن مسؤولية الفريق يؤدي إلى دمج التغييرات من الجذع إلى هذا الفرع ميزة على أساس منتظم.
فمن المفيد دائما لدمج التغييرات من الجذع في كثير من الأحيان. لأنه بعد بضعة أيام الصراع بين النسخة الجذع والفرع نسخة يمكن الخروج من جهة ودمج سيكون عمليا مستحيلا.
عندما فرع المطور أو فرع ميزة جاهزة للإفراج عنهم، دمج التغييرات مرة أخرى من الفرع إلى الجذع.
وأخيرا، تذكر أنه لا توجد استراتيجية مثالية للتفرع والاندماج. ذلك إلى حد كبير يعتمد على بيئة التنمية فريدة من نوعها. إذا كان لديك أي استراتيجية أخرى، أود أن أسمع عن ذلك.
No comments:
Post a Comment