سوبفيرزيون رشيقة استراتيجية المتفرعة
تمت كتابة هذه الوثائق لوصف سلسلة 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. مايكل بيلاتو.
سوبفيرزيون رشيقة استراتيجية المتفرعة
الحصول على فيا أب ستور قراءة هذه المشاركة في التطبيق لدينا!
أفضل استراتيجية المتفرعة عند القيام التكامل المستمر؟
ما هي أفضل استراتيجية متفرعة لاستخدامها عندما تريد أن تفعل التكامل المستمر؟
الافراج عن فرع: تطوير على الجذع، والحفاظ على فرع لكل إصدار. ميزة المتفرعة: تطوير كل ميزة في فرع منفصل، دمج فقط مرة واحدة مستقرة.
هل من المنطقي استخدام كل من هذه الاستراتيجيات معا؟ كما هو الحال في، كنت فرع لكل إصدار ولكن أيضا فرع لميزات كبيرة؟ هل أحد هذه الاستراتيجيات يتشابه بشكل أفضل مع التكامل المستمر؟ هل استخدام التكامل المستمر حتى معنى عند استخدام جذع غير مستقر؟
11 أجوبة.
تعتمد الإجابة على حجم فريقك وجودة التحكم في المصدر والقدرة على دمج مجموعات التغيير المعقدة بشكل صحيح. على سبيل المثال في كامل تحكم مصدر فرع مثل كفس أو سفن دمج يمكن أن يكون صعبا وكنت قد يكون أفضل حالا مع النموذج الأول، في حين إذا كان استخدام نظام أكثر تعقيدا مثل عب كليركيس ومع حجم أكبر من فريق هل يمكن أن يكون أفضل من مع الثانية نموذج أو مزيج من الاثنين.
أنا شخصيا سوف فصل نموذج فرع الميزة، حيث تم تطوير كل ميزة رئيسية على فرع منفصل، مع المهام الفرعية لكل تغيير يقوم به المطور الفردية. كما تستقر الميزات أنها تحصل على دمجها إلى الجذع، والتي يمكنك الاحتفاظ مستقرة بشكل معقول وتمرير جميع اختبارات الانحدار في جميع الأوقات. كما كنت بالقرب من نهاية دورة الإصدار الخاص بك وجميع فروع دمج، يمكنك استقرار وفرع فرع نظام الإصدار الذي تقوم به فقط إصلاحات الشوائب الاستقرار والرجعية الضرورية، في حين يتم استخدام الجذع لتطوير الإصدار التالي وأنت مرة أخرى فرع قبالة عن فروع ميزة جديدة. وما إلى ذلك وهلم جرا.
هذه الطريقة جذع يحتوي دائما على أحدث رمز، ولكن يمكنك إدارة للحفاظ على استقرار معقول، وخلق تسميات مستقرة (العلامات) على التغييرات الرئيسية وميزات الميزة، فروع ميزة هي تطور يسير بخطى سريعة مع التكامل المستمر والفرعية المهام الفرعية يمكن أن تكون في كثير من الأحيان تحديث من فرع ميزة للحفاظ على كل شخص يعمل على نفس الميزة في المزامنة، في حين لا تؤثر في وقت واحد فرق أخرى تعمل على ميزات مختلفة.
في الوقت نفسه لديك من خلال التاريخ مجموعة من فروع الإفراج، حيث يمكنك توفير الخلفيات والدعم وبوجفيكسيس لعملائك الذين لأي سبب من الأسباب البقاء على الإصدارات السابقة من المنتج الخاص بك أو حتى مجرد أحدث الإصدار الذي تم إصداره. كما هو الحال مع الجذع، كنت لا الإعداد التكامل المستمر على فروع الإفراج، فهي متكاملة بعناية على اجتياز جميع اختبارات الانحدار وغيرها من مراقبة الجودة الإصدار.
إذا لسبب ما اثنين من الميزات هي تعتمد على بعضها البعض وتحتاج إلى تغييرات من قبل بعضها البعض، يمكنك النظر إما لتطوير على حد سواء في نفس الفرع ميزة أو تتطلب الميزات لدمج بانتظام أجزاء مستقرة من التعليمات البرمجية إلى الجذع ثم تحديث التغييرات من الجذع لتبادل رمز بين فروع الجذع. أو إذا كنت بحاجة إلى عزل هاتين الميزتين من الآخرين، يمكنك إنشاء فرع مشترك قبالة التي تقوم بتفرع تلك الفروع الميزة والتي يمكنك استخدامها لتبادل التعليمات البرمجية بين الميزات.
النموذج أعلاه لا يجعل من المنطقي بكثير مع فرق تحت 50 المطورين ونظام التحكم في المصدر دون فروع متفرق والقدرة على الاندماج السليم مثل كفس أو سفن، والتي من شأنها أن تجعل فقط هذا النموذج كله كابوس لإعداد وإدارة ودمج.
أجد موضوع مثير للاهتمام حقا لأنني تعتمد بشدة على الفروع على عملي اليومي.
أتذكر مارك شلوورث يقترح نموذجا حول الحفاظ على الفرع الرئيسي البكر في حين تتجاوز سي التقليدية. نشرت لي حول هذا الموضوع هنا. منذ أنا على دراية التحكم كروز، أنا أيضا المدونات حول فروع المهمة و سي هنا. انها خطوة بخطوة تعليمي شرح كيفية القيام بذلك مع سم البلاستيك. وأخيرا، وجدت بعض الموضوعات حول سي (وربما يتحدث عن المتفرعة) في كتاب دوفال على سي مثيرة جدا للاهتمام أيضا.
نأمل أن تجد الروابط مثيرة للاهتمام.
أنا شخصيا أجد أنه من الأنظف أن يكون جذع مستقر والقيام ميزة المتفرعة. وبهذه الطريقة، واختبار وما شابه ذلك الحصول على البقاء على "نسخة" واحدة وتحديث من الجذع لاختبار أي ميزة أن رمز الكامل.
أيضا إذا كان العديد من المطورين يعملون على ميزات مختلفة، فإنها يمكن أن يكون كل فروع منفصلة الخاصة بهم، ثم دمج جذع عند الانتهاء من ذلك وإرسال ميزة لاختبارها دون اختبار الحاجة إلى التحول إلى فروع متعددة لاختبار ميزات مختلفة.
كما مكافأة إضافية، وهناك بعض مستوى اختبار التكامل التي تأتي تلقائيا.
وأعتقد أن أي من الاستراتيجية يمكن استخدامها مع التطوير المستمر بشرط أن تتذكر واحدة من المبادئ الرئيسية التي تلتزم كل مطور لجذع / الخط الرئيسي كل يوم.
لقد تم القيام ببعض القراءة من هذا الكتاب على سي والكتاب جعل تشير إلى أن المتفرعة من قبل الافراج عن استراتيجية المتفرعة المفضل لديهم. علي ان اوافق. المتفرعة من ميزة لا معنى لي عند استخدام سي.
سأحاول وشرح لماذا أنا أفكر بهذه الطريقة. ويقول ثلاثة مطوري كل اتخاذ فرع للعمل على ميزة. ستستغرق كل ميزة عدة أيام أو أسابيع حتى تنتهي. لضمان اندماج الفريق بشكل مستمر يجب أن تلتزم الفرع الرئيسي مرة واحدة على الأقل في اليوم. بمجرد أن تبدأ في القيام بذلك فإنها تفقد فائدة إنشاء فرع الميزة. لم تعد تغييراتهم منفصلة عن جميع التغييرات الأخرى للمطور. هذا هو الحال، لماذا تهتم لخلق فروع ميزة في المقام الأول؟
يتطلب استخدام المتفرعة من قبل الإصدار أقل بكثير دمج بين الفروع (دائما شيء جيد)، يضمن أن جميع التغييرات الحصول على أساب متكامل و (إذا فعلت بشكل صحيح) يضمن قاعدة التعليمات البرمجية الخاصة بك في دائما على استعداد للافراج عنهم. الجانب إلى المتفرعة من قبل الإفراج هو أن عليك أن تكون أكثر حذرا إلى حد كبير مع التغييرات. مثلا إعادة بيع كبيرة يجب أن يتم بشكل متزايد، وإذا كنت قد قمت بالفعل دمج ميزة جديدة التي لا تريد في الإصدار التالي ثم يجب أن تكون مخفية باستخدام نوع من ميزة تبديل آلية.
هناك أكثر من رأي واحد حول هذا الموضوع. هنا هو مشاركة بلوق وهو الموالية ميزة المتفرعة مع سي.
الافراج عن فروع مفيدة جدا، وحتى مطلقة تماما، إذا كنت بحاجة إلى الحفاظ على عدة إصدارات من التطبيق الخاص بك.
ميزة فروع أيضا مريحة للغاية، لا سيما إذا كان مطور واحد يحتاج إلى العمل على تغيير كبير، في حين أن آخرين لا يزالون الافراج عن الإصدارات الجديدة.
لذلك بالنسبة لي باستخدام كلتا الآليتين هي استراتيجية جيدة جدا.
وصلة مثيرة للاهتمام من كتاب سفن.
لقد جئت مؤخرا إلى مثل هذا النموذج عند استخدام جيت. على الرغم من أنه تم وضع علامة على سؤالك "سفن"، قد تكون لا تزال قادرا على الاستفادة من ذلك.
التكامل المستمر يمكن أن يحدث إلى حد ما في فرع "تطوير" (أو ما تسمونه) في هذا النموذج، على الرغم من وجود فروع طويلة المدى تشغيل الإصدارات المستقبلية لن تجعل من جامدة جدا للنظر في كل تغيير يحدث لرمز في مكان ما. يبقى السؤال، ما إذا كنت تريد حقا ذلك. مارتن فاولر يفعل.
يجب أن لا يكون التكامل المستمر أي نوع من العوامل في تحديد استراتيجية التفرع الخاص بك. يجب اختيار النهج المتفرع الخاص بك على أساس فريقك، ونظام قيد التطوير والأدوات المتاحة لك.
وقد قلت ذلك .
ليس هناك سبب لعدم استخدام سي في كل من النهج التي تصف تلك النهج تعمل بشكل جيد جدا في الجمع بين أي من العملين "أفضل" من سي الأخرى يجعل الشعور الكلي مع جذع غير مستقر.
تم الإجابة على كل هذا في السؤال الرابع على الصفحة التي أخذت الرسوم البيانية من: blogs. collab / التخريب / 2007/11 / المتفرعة سترات /
طالما أنك تفهم المبادئ، يمكنك دائما إعادة اختراع أفضل الممارسات. إذا كنت لا تفهم المبادئ، فإن أفضل الممارسات سوف يأخذك قبل أن ينهار بسبب بعض المتطلبات الخارجية المتضاربة.
اقرأ الرابط. بمجرد الحصول على الأساسيات، قراءة المقال التالي من قبل هنريك كنيبرج الموقر. وسوف تساعدك على ربط النموذج الرئيسي مع التكامل المستمر.
عندما بدأنا فريقنا ورثنا استراتيجية قائمة على الإصدار من البائع التي وضعت في الأصل النظام كنا على وشك الحصول على المسؤول عن. عملت حتى الوقت الذي طلب فيه عملائنا أن العديد من الميزات المتقدمة لا ينبغي أن تدرج في إصدار (f. y.i.
خطوط 250K من التعليمات البرمجية،
2500 الملفات، سكروم مع زب سدلك).
ثم بدأنا النظر في الفروع القائمة على ميزة. هذا عمل أيضا لفترة من الوقت - مثل 2 أشهر حتى النقطة أدركنا أن عملية اختبار الانحدار لدينا سوف يستغرق أكثر من 2 أسابيع التي جنبا إلى جنب مع عدم اليقين من ما سيصدر صدر خلق إزعاج كبير.
وجاء "مسمار في التابوت" النهائي من استراتيجيات سك نقية عندما قررنا أنه ينبغي أن يكون 1. الجذع مستقرة و 2. يجب أن يحتوي الإنتاج ست، وات، والانحدار اختبار بيناريز (وليس فقط مصدر - أعتقد سيسي)
وهذا يقودنا إلى وضع استراتيجية هي مزيج بين ميزة واستراتيجيات سك القائمة على إطلاق سراح.
لذلك لدينا جذع. كل سباق نحن فرع فرع العدو (لغير الناس رشيقة - سباق هو مجرد جهد التنمية محاصر الوقت مع مخرجات متغيرة على أساس التعقيد.) من فرع العدو نخلق فروع ميزة والتنمية الموازية يبدأ فيها. وبمجرد الانتهاء من الميزات واختبار النظام، ونحن نتلقى نية لنشرها، يتم دمجها إلى فرع العدو - بعض قد تطفو عبر العديد من سباقات السرعة، وعادة ما تكون أكثر تعقيدا. مرة واحدة في سباق بالقرب من نهايته والميزات كاملة. نحن "إعادة تسمية" فرع العدو إلى "الانحدار" (وهذا يسمح كروزيكونترول لاستلامه من دون أي إعادة تشكيل) ثم يبدأ الانحدار / اختبار التكامل على إير بناء سيسي. عندما يتم ذلك كله، فإنه يذهب في الإنتاج.
وباختصار، يتم استخدام الفروع القائمة على ميزة لتطوير واختبار النظام ووظائف وات. فرع العدو (حقا فرع الإفراج) يستخدم لدمج انتقائي الميزات على الطلب والتكامل الاختبار.
الآن هنا هو السؤال للمجتمع - نحن من الواضح أن تواجه مشكلة في أداء التكامل المستمر بسبب حقيقة أن التنمية تحدث على العديد من الفروع وإعادة تشكيل النفقات العامة من كروزيكونترول. يمكن لشخص ما اقتراح والمشورة؟
الطريقة التي أرى أنها تريد أن يكون مجموعة محدودة من الفروع حيث يمكنك التركيز. نظرا لأنك تريد إجراء اختبارات، ومقاييس جودة الشفرة، والعديد من الأمور المثيرة للاهتمام للتشغيل باستخدام عمليات الإنشاء، فإن وجود عدد كبير جدا من التقارير سيجعلك تفوت المعلومات.
عندما وماذا لفرع، وعادة ما يعتمد على حجم الفريق وحجم الميزات التي يجري تطويرها. لا أعتقد أن هناك قاعدة ذهبية. تأكد من استخدام إستراتيجية يمكنك من خلالها الحصول على التعليقات في وقت مبكر / في كثير من الأحيان، والتي تتضمن تضمين الجودة من بداية الميزات. نوعية بت، يعني أنه كما كنت أتمتة كما فريق يتطور، إذا كنت فرع لميزة كبيرة مجموعة فريق هو بناء، لديك فلدي يكون لها جودة المشاركة في الفريق أيضا.
ملاحظة: أين حصلت على تلك المراجع؟ - لا يشعر أن تلك الرسوم البيانية تمثل جميع الخيارات.
تحديث 1: توسيع لماذا قلت انها ليست قاعدة ذهبية. أساسا لفرق صغيرة نسبيا لقد وجدت أنه من الأفضل باستخدام النهج الذي هو مزيج. يتم إنشاء فروع ميزة إذا كان شيئا طويلا وجزء من الفريق سيستمر إضافة ميزات أصغر.
أعتقد أن الأدوات التي تستخدمها عامل كبير هنا.
إذا كنت تستخدم التخريب، التمسك الخيار 1 والافراج عن الفروع. إذا كنت تستخدم جيت، الخيار 2 سوف تعمل بشكل جيد بالنسبة لك.
سوبفيرزيون رشيقة استراتيجية المتفرعة
الحصول على فيا أب ستور قراءة هذه المشاركة في التطبيق لدينا!
استراتيجية فرع واحد في التنمية رشيقة.
حاليا في مشروعنا لدينا الجذع، وإطلاق سراح الفروع أيضا الإصلاح برانسس، ونحن نخطط للحفاظ على استراتيجية فرع واحد بدلا من الحفاظ على متعددة. يمكن لأي واحد شرح ما هي جميع النهج التي نحتاج إلى اتخاذها وكيف يمكن أن تؤثر على أدائنا وتطوير المشروع.
أنا جديدة جدا إلى فريق سي ومحاولة فهم هذه العملية. هل هناك أي أدوات لدمج قاعدة التعليمات البرمجية دون تدخل يدوي.
رفع الحظر! دليل على رشيق مستمر جديد.
المتفرعة و فوركينغ.
في فروع ودمج أنماط، كل مساهم يحافظ على نسخته الخاصة من البرنامج (فرع أو شوكة). يقوم المساهم بنسخ الخط الرئيسي في البداية، ثم يحتفظ به عن طريق دمج التغييرات من الخط الرئيسي للبقاء حتى الآن. عندما يكون للمساهم تغيير كامل للمساهمة، يمكنه دمجه مباشرة في الخط الرئيسي، أو وضع & لدكو؛ دمج طلب & رديقو؛ أو & لدكو؛ طلب سحب & رديقو؛ في نظام مراجعة.
هذا هو نمط مرنة جدا التي يمكن تنفيذ العديد من الأنماط السابقة.
غير رسمية. يمكنك تحديث بشكل متكرر ودمج كل تغيير مباشرة، دون مراجعة.
استعراض الفرع. سوف تحصل بشكل طبيعي على نمط مراجعة فرع إذا قمت بإجراء & لدكو؛ فروع المهام & رديقو؛ لكل تغيير تريد العمل عليه.
المتتالية. سوف تحصل على نمط المتتالية إذا قمت بإنشاء فروع أو الشوك لكل ميزة رئيسية أو فريق. هذا ما يسمى عادة & لدكو؛ فرع ميزة & رديقو؛ نمط إذا كنت تستخدم لميزات. إذا كنت تستخدمها للفرق أو المساهمين الفرديين، فستحصل على & نبسب؛ & نبسب ؛؛ مينتينر & رديقو؛ حيث يقوم كل مساهم بإدخال تغييرات تصل إلى المشرف، الذي يدمجها في نظام أكبر.
التسليم المستمر الموزع: في فصل التسليم المستمر، سنرى كيف يمكن استخدام الفروع لاختبار و إطلاق كل تغيير.
المتفرعة لديها العديد من النكهات، موضح أدناه.
الفرع: يمكن للمساهمين إنشاء فرع داخل أي مستودع. يتم ترخيص الفروع وأذونات الفروع من قبل مالك مستودع. سير العمل هذا يجعل المحتوى والتغيير مرئيا للجميع في فريق صغير.
تيار: في نظام قائم على تيار مثل بيرفورس، فروع المطور تذكر فروع المنبع التي ينبغي أن تكون مصدر التحديثات، والفروع المصب التي يجب أن تتدفق التغييرات. أنظمة التدفق مفيدة إذا كنت تقوم بتجميع نظام أو بيئة مطور من مجموعة معقدة من المكونات. في هذا المثال، نرى فرعا أو مساحة عمل تحتوي على مكونات من عدة فروع أخرى.
شوكة: المساهم يستخدم دفكس (توزيع نظام التحكم الإصدار) مثل جيت لجعل نسخة من النسخة الرئيسية، ودعا شوكة. عند مفترق، هناك نسختين من التعليمات البرمجية في مستودعات منفصلة، مع أذونات منفصلة. يقرر مالك الشوكة متى يتم تحديث الشوكة، ويحدد مالك المنشأ متى يقبل المساهمات. يمكنك منح إذن القراءة لكثير من المساهمين، ولا تحتاج إلى إدارة أذونات الكتابة.
هذا هو وسيلة رائعة لتوسيع عدد المساهمين في مشروع مفتوح المصدر. كما أنها شعبية للتنمية التجارية بسبب المرونة التي يعطيها للمساهم.
تحديث فروع أو الشوك في كثير من الأحيان.
غالبا ما يلاحظ النقاد أن المطورين يميلون إلى العمل لفترة طويلة على الفروع، ثم يتسببون في مشاكل التكامل من خلال دمج دفعات كبيرة من التعليمات البرمجية. العثور على مشاكل في هذه دفعات كبيرة من التعليمات البرمجية أمر صعب. عمليات التفريق سوف تنهار عندما المساهمات من فروع ميزة أو الشوك كبيرة، أو من الصعب دمج، أو تحتوي على البق التي يجب حلها في وقت الدمج.
هذه المشكلة "الفروع طويلة المدى" اللعين هو السبب الرئيسي في أن دعاة التكامل المستمر المركزي يعارضون توزيع الحراك والتفرع.
ومع ذلك، يمكنك بسهولة تجنب هذه المشكلة إذا قمت بتحديث فرع ميزة الخاص بك في كثير من الأحيان مع تغييرات من الأصل. إذا كنت تستخدم فروع أو الشوك، يجب عليك:
دمج في كثير من الأحيان من الأصل أو إصدار الإنتاج إلى إصدار التطوير الخاص بك. من خلال القيام التحديث المتكرر، والتكامل، والاختبار في النسخة التطوير الخاص بك، يمكنك البقاء على مقربة من نسخة الإنتاج. اختبار على الفرع الخاص بك قبل تقديم تغييرات على المنشأ. يجب التأكد من أن التغييرات في فرع الميزة أو مفترق الطرق تعمل بشكل صحيح قبل إرسالها ليتم دمجها. اطلق التغييرات بأكبر قدر ممكن. عند تحرير كميات صغيرة من التعليمات البرمجية، سوف تجد مشاكل أسرع لأن لديك أماكن أقل للبحث عن المشاكل.
الدمج مع جيت.
يستخدم جيت الفروع والشوك بشكل افتراضي. جيت لديها دعم ممتاز لعملية تحديث فرع أو مفترق من الأصل. لدى جيت ميزة فريدة تسمى & كوت؛ ريبيس & كوت؛ الذي يسمح للمساهم بتحديث من الأصل، ومن ثم تسليم التغييرات التي من السهل دمجها. ريباس يأخذ التاريخ كله من تبادل الرموز يؤدي إلى تسليم التغييرات ويضع كل التغييرات في حزمة واحدة.
هذا نهج جذري لأنه & كوت؛ يعيد كتابة السجل & كوت؛ عن طريق حذف سجل الالتزامات السابقة. تم تصميم فس أخرى لمنع أي فقدان التاريخ. ومن الممكن أن يكون هذا النهج الراديكالي ل ريباس هو السبب في أن جيت أصبح دفكس الأكثر شعبية. وكما سنرى، فمن المهم في نمط التكامل المستمر الموزعة.
دمج مع التخريب.
التخريب لا يعمل بشكل جيد عند محاولة دمج عدة مرات من الأصل أو فرع الجذع. وبسبب هذا، فإن معظم مستخدمي التخريب يتعلمون تجنب فروع طويلة الأمد، ومعظم فرق التخريب تستخدم نموذج تسليم مستمر مركزي يتجنب التفرع.
إذا واجهت فرعا طويلا في سوبفيرزيون، يمكنك استخدام اثنين من الحيل لدمجها. الأول هو تنفيذ دمج جديد في سوبفيرزيون 1.8، من جوليان فواد. وقد قام بتحديث دمج التخريب بحيث يكون أكثر ذكاء حول نقل التغييرات بين الجذع والفروع. بينما أكتب هذا في مايو 2018، يختبر فريق أباتشي سوبفيرزيون هذه التغييرات للإفراج عنه.
التقنية الثانية هي ريباس اليدوي. للقيام بإعادة تمهيد اليدوي، أولا جعل فرع الثاني من الجذع أو الأصل، ثم دمج التغييرات الخاصة بك في الفرع الثاني واختباره. هذا له تأثير وضع كل التغييرات الخاصة بك في مراجعة واحدة أو مجموعة من التنقيحات على رأس تاريخ الفرع - نفس التأثير مثل ريتيس جيت. بعد ذلك سوف تجد التنقيحات سهلة لدمج الجذع أو الأصل.
لماذا استخدام فروع ميزة طويلة المدى؟
تحدثنا في وقت سابق عن استخدام الفروع المؤقتة أو فروع المهام لمراجعة التعليمات البرمجية. يمكنك أيضا استخدام فروع ميزة طويلة المدى أو الشوك للقيام مراجعة التعليمات البرمجية، مع الاختبار الآلي والتعليق والتصويت. في هذا النظام، لا يساهم المساهمون في إنشاء فرع مؤقت لكل تغيير. بدلا من ذلك، يحتفظون بنسخة تشغيل أطول، وينشرون & كوت؛ طلبات السحب & كوت؛ أو & كوت؛ دمج الطلبات & كوت؛ لإخبار المراجعين بمراجعة التغييرات وقبولها.
سوف تعمل على المدى الطويل فروع أو الشوكات تكون مفيدة إذا كنت:
تجميع المكونات في نظام كامل باستخدام النمط المتتالي هل لديك مساهمين مستقلين ترغب في التجربة، أو ليست جزءا من الفريق مع أذونات داخلية ليس لديهم مراجعين بدوام كامل.
ميزة المتفرعة طريقك إلى العظمة.
أو مهمة المتفرعة طريقك إلى هناك. أو الافراج عن المتفرعة. اختار أنت.
تقريبا جميع أنظمة التحكم الإصدار اليوم دعم فروع وندش]؛ خطوط مستقلة من العمل التي تنبع من قاعدة رمز مركزي واحد. اعتمادا على نظام التحكم في الإصدار الخاص بك، الفرع الرئيسي يمكن أن يسمى الرئيسي، الخط الرئيسي، الافتراضي، أو الجذع. يمكن للمطورين إنشاء فروعهم الخاصة من خط التعليمات البرمجية الرئيسية والعمل بشكل مستقل إلى جانب ذلك.
لماذا تهتم بالتفرع؟
التفرع يسمح فرق من المطورين للتعاون بسهولة داخل قاعدة رمز مركزي واحد. عندما يقوم مطور البرامج بإنشاء فرع، يقوم نظام التحكم في الإصدار بإنشاء نسخة من قاعدة التعليمات البرمجية في تلك المرحلة الزمنية. لا تؤثر التغييرات التي تطرأ على الفرع على مطوري البرامج الآخرين في الفريق. هذا أمر جيد، من الواضح، لأن الميزات قيد التطوير يمكن أن تخلق حالة من عدم الاستقرار، والتي من شأنها أن تكون مزعجة للغاية إذا كان كل عمل يحدث على خط التعليمات البرمجية الرئيسية. لكن الفروع لا تحتاج إلى العيش في الحبس الانفرادي. يمكن للمطورين بسهولة سحب التغييرات من المطورين الآخرين للتعاون على الميزات وضمان فرع خاص بهم لا تختلف كثيرا عن سيد.
الفروع ليست جيدة فقط للعمل المميز. يمكن للفروع عزل الفريق من التغييرات المعمارية الهامة مثل تحديث الأطر، والمكتبات الشائعة، وما إلى ذلك.
ثلاثة استراتيجيات المتفرعة لفرق رشيقة.
وغالبا ما تختلف النماذج المتفرعة بين الفرق، وهي موضوع الكثير من النقاش في مجتمع البرمجيات. موضوع واحد كبير هو كم يجب أن يبقى العمل في فرع قبل الحصول على اندمجت مرة أخرى إلى سيد.
الافراج عن المتفرعة.
الإفراج عن المتفرعة يشير إلى فكرة أن يتم تضمين الإصدار تماما داخل فرع. وهذا يعني أنه في وقت متأخر من دورة التطوير، سيقوم مدير الإصدار بإنشاء فرع من الرئيسي (على سبيل المثال، & لدكو؛ 1.1 ديفيلوبمنت برانش & رديقو؛). جميع التغييرات في الإصدار 1.1 تحتاج إلى تطبيق مرتين: مرة واحدة إلى فرع 1.1 ثم إلى خط التعليمات البرمجية الرئيسية. العمل مع فرعين هو عمل إضافي للفريق وأنه من السهل أن ننسى أن دمج لكلا الفرعين. الافراج عن فروع يمكن أن يكون غير عملي ويصعب إدارة العديد من الناس يعملون على نفس الفرع. لقد شعرنا جميعا بألم الحاجة إلى دمج العديد من التغييرات المختلفة على فرع واحد. إذا كان يجب عليك القيام فرع الإفراج إنشاء فرع أقرب إلى الإصدار الفعلي ممكن.
الافراج عن المتفرعة هو جزء مهم من دعم برنامج فيرسيونيد خارج في السوق. قد يكون منتج واحد عدة فروع الافراج (على سبيل المثال، 1.1، 1.2، 2.0) لدعم التنمية المستدامة. ضع في اعتبارك أنه قد يلزم دمج التغييرات في الإصدارات السابقة (أي 1.1) مع الفروع التي تم إصدارها لاحقا (بمعنى، 1.2، 2.0). راجع برنامج الويبينار أدناه لمعرفة المزيد حول إدارة فروع الإصدار باستخدام جيت.
ميزة المتفرعة.
غالبا ما تقترن فروع الميزة بأعلام الميزة & نداش؛ & كوت؛ تبديل & كوت؛ التي تمكن أو تعطيل ميزة داخل المنتج. هذا يجعل من السهل لنشر التعليمات البرمجية إلى سيد والتحكم عندما يتم تنشيط الميزة، مما يجعل من السهل لنشر التعليمات البرمجية في البداية قبل تعرض هذه الميزة للمستخدمين النهائيين.
ميزة أخرى من الأعلام ميزة هو أن رمز يمكن أن تبقى ضمن البناء ولكن غير نشط في حين انها في التنمية. إذا كان هناك شيء يذهب أوري عند تمكين الميزة، يمكن لمسؤول النظام إعادة العلم ميزة والعودة إلى حالة جيدة معروفة بدلا من أن يكون لنشر بناء جديد.
المهام المتفرعة.
في أتلاسيان، نركز على سير عمل فرع لكل مهمة. كل منظمة لديها وسيلة طبيعية لكسر العمل في المهام الفردية داخل تعقب القضية، مثل جيرا البرمجيات. ثم تصبح القضايا نقطة الاتصال المركزية للفريق لهذه القطعة من العمل. المهام المتفرعة، المعروف أيضا باسم المتفرعة المسألة، يربط مباشرة تلك القضايا مع التعليمات البرمجية المصدر. يتم تنفيذ كل قضية على فرعها الخاص مع مفتاح القضية المدرجة في اسم الفرع. من السهل أن نرى التعليمات البرمجية التي تنفذ أي قضية: مجرد إلقاء نظرة على مفتاح القضية في اسم الفرع. مع هذا المستوى من الشفافية، من الأسهل تطبيق تغييرات محددة على الرئيسي أو أي فترة أطول تشغيل فرع الإصدار القديم.
منذ مراكز رشيقة حول قصص المستخدم، وفروع المهام الزوج بشكل جيد مع التنمية رشيقة. كل قصة المستخدم (أو علة الإصلاح) يعيش داخل فرعها الخاص، مما يجعل من السهل أن نرى أي القضايا قيد التقدم والتي هي على استعداد للإفراج عنهم. لعمق الغوص في مهمة المتفرعة (تسمى أحيانا قضية المتفرعة أو فرع لكل قضية)، والاستيلاء على بعض الفشار وتحقق من تسجيل الويبينار أدناه وندش]؛ واحدة من أكثر شعبية لدينا من أي وقت مضى.
الآن تلبية التوأم الشر المتفرعة: الدمج.
نحن جميعا تحملت الألم في محاولة لدمج فروع متعددة في حل واحد معقول. تقليديا، جعلت أنظمة التحكم في النسخة المركزية مثل التخريب دمج عملية مؤلمة جدا. ولكن أنظمة التحكم الإصدار الأحدث مثل جيت و ميركوريال تأخذ نهجا مختلفا لتتبع إصدارات الملفات التي تعيش على فروع مختلفة.
تميل الفروع إلى أن تكون قصيرة الأجل، مما يجعل من السهل دمج وأكثر مرونة عبر قاعدة التعليمات البرمجية. بين القدرة على دمج الفروع بشكل متكرر وتلقائي كجزء من التكامل المستمر (سي)، وحقيقة أن الفروع قصيرة العمر تحتوي ببساطة على تغييرات أقل، & كوت؛ دمج الجحيم & كوت؛ يصبح شيئا من الماضي للفرق باستخدام جيت و ميركوريال.
هذا ما يجعل المتفرعة مهمة رهيبة جدا!
التحقق من صحة، التحقق من صحة، التحقق من صحة.
نظام التحكم في الإصدار يمكن أن يذهب فقط حتى الآن في التأثير على نتيجة الدمج. الاختبار الآلي والتكامل المستمر حاسمة أيضا. معظم خوادم سي يمكن أن تضع تلقائيا فروع جديدة تحت الاختبار، والحد بشكل كبير من عدد & كوت؛ مفاجآت & كوت؛ على الاندماج النهائي المنبع وتساعد على الحفاظ على خط رمز الرئيسي مستقرة.
كان أجيل تأثير كبير على لي على حد سواء مهنيا وشخصيا كما تعلمنا أفضل التجارب هي رشيقة، سواء في التعليمات البرمجية والحياة. سوف تجد لي في كثير من الأحيان على تقاطع التكنولوجيا والتصوير الفوتوغرافي، والدراجات النارية. تجد لي على تويتر! danradigan.
اشترك للحصول على المزيد من المقالات.
شكرا لتسجيلك!
كيفية القيام سكروم مع جيرا البرمجيات.
A step-by-step guide on how to drive a scrum project, prioritize and organize your backlog into sprints, run the Scrum ceremonies and more, all within Jira Software.
Git branching for agile teams.
Moving to Git opens up a whole new level of agility for software teams. Here's how to design branching schemes for shipping both SaaS and installed products.
الحصول على فيا أب ستور قراءة هذه المشاركة في التطبيق لدينا!
أفضل استراتيجية المتفرعة عند القيام التكامل المستمر؟
ما هي أفضل استراتيجية متفرعة لاستخدامها عندما تريد أن تفعل التكامل المستمر؟
الافراج عن فرع: تطوير على الجذع، والحفاظ على فرع لكل إصدار. ميزة المتفرعة: تطوير كل ميزة في فرع منفصل، دمج فقط مرة واحدة مستقرة.
هل من المنطقي استخدام كل من هذه الاستراتيجيات معا؟ كما هو الحال في، كنت فرع لكل إصدار ولكن أيضا فرع لميزات كبيرة؟ هل أحد هذه الاستراتيجيات يتشابه بشكل أفضل مع التكامل المستمر؟ هل استخدام التكامل المستمر حتى معنى عند استخدام جذع غير مستقر؟
11 أجوبة.
تعتمد الإجابة على حجم فريقك وجودة التحكم في المصدر والقدرة على دمج مجموعات التغيير المعقدة بشكل صحيح. على سبيل المثال في كامل تحكم مصدر فرع مثل كفس أو سفن دمج يمكن أن يكون صعبا وكنت قد يكون أفضل حالا مع النموذج الأول، في حين إذا كان استخدام نظام أكثر تعقيدا مثل عب كليركيس ومع حجم أكبر من فريق هل يمكن أن يكون أفضل من مع الثانية نموذج أو مزيج من الاثنين.
أنا شخصيا سوف فصل نموذج فرع الميزة، حيث تم تطوير كل ميزة رئيسية على فرع منفصل، مع المهام الفرعية لكل تغيير يقوم به المطور الفردية. كما تستقر الميزات أنها تحصل على دمجها إلى الجذع، والتي يمكنك الاحتفاظ مستقرة بشكل معقول وتمرير جميع اختبارات الانحدار في جميع الأوقات. كما كنت بالقرب من نهاية دورة الإصدار الخاص بك وجميع فروع دمج، يمكنك استقرار وفرع فرع نظام الإصدار الذي تقوم به فقط إصلاحات الشوائب الاستقرار والرجعية الضرورية، في حين يتم استخدام الجذع لتطوير الإصدار التالي وأنت مرة أخرى فرع قبالة عن فروع ميزة جديدة. وما إلى ذلك وهلم جرا.
هذه الطريقة جذع يحتوي دائما على أحدث رمز، ولكن يمكنك إدارة للحفاظ على استقرار معقول، وخلق تسميات مستقرة (العلامات) على التغييرات الرئيسية وميزات الميزة، فروع ميزة هي تطور يسير بخطى سريعة مع التكامل المستمر والفرعية المهام الفرعية يمكن أن تكون في كثير من الأحيان تحديث من فرع ميزة للحفاظ على كل شخص يعمل على نفس الميزة في المزامنة، في حين لا تؤثر في وقت واحد فرق أخرى تعمل على ميزات مختلفة.
في الوقت نفسه لديك من خلال التاريخ مجموعة من فروع الإفراج، حيث يمكنك توفير الخلفيات والدعم وبوجفيكسيس لعملائك الذين لأي سبب من الأسباب البقاء على الإصدارات السابقة من المنتج الخاص بك أو حتى مجرد أحدث الإصدار الذي تم إصداره. كما هو الحال مع الجذع، كنت لا الإعداد التكامل المستمر على فروع الإفراج، فهي متكاملة بعناية على اجتياز جميع اختبارات الانحدار وغيرها من مراقبة الجودة الإصدار.
إذا لسبب ما اثنين من الميزات هي تعتمد على بعضها البعض وتحتاج إلى تغييرات من قبل بعضها البعض، يمكنك النظر إما لتطوير على حد سواء في نفس الفرع ميزة أو تتطلب الميزات لدمج بانتظام أجزاء مستقرة من التعليمات البرمجية إلى الجذع ثم تحديث التغييرات من الجذع لتبادل رمز بين فروع الجذع. أو إذا كنت بحاجة إلى عزل هاتين الميزتين من الآخرين، يمكنك إنشاء فرع مشترك قبالة التي تقوم بتفرع تلك الفروع الميزة والتي يمكنك استخدامها لتبادل التعليمات البرمجية بين الميزات.
النموذج أعلاه لا يجعل من المنطقي بكثير مع فرق تحت 50 المطورين ونظام التحكم في المصدر دون فروع متفرق والقدرة على الاندماج السليم مثل كفس أو سفن، والتي من شأنها أن تجعل فقط هذا النموذج كله كابوس لإعداد وإدارة ودمج.
أجد موضوع مثير للاهتمام حقا لأنني تعتمد بشدة على الفروع على عملي اليومي.
أتذكر مارك شلوورث يقترح نموذجا حول الحفاظ على الفرع الرئيسي البكر في حين تتجاوز سي التقليدية. نشرت لي حول هذا الموضوع هنا. منذ أنا على دراية التحكم كروز، أنا أيضا المدونات حول فروع المهمة و سي هنا. انها خطوة بخطوة تعليمي شرح كيفية القيام بذلك مع سم البلاستيك. وأخيرا، وجدت بعض الموضوعات حول سي (وربما يتحدث عن المتفرعة) في كتاب دوفال على سي مثيرة جدا للاهتمام أيضا.
نأمل أن تجد الروابط مثيرة للاهتمام.
أنا شخصيا أجد أنه من الأنظف أن يكون جذع مستقر والقيام ميزة المتفرعة. وبهذه الطريقة، واختبار وما شابه ذلك الحصول على البقاء على "نسخة" واحدة وتحديث من الجذع لاختبار أي ميزة أن رمز الكامل.
أيضا إذا كان العديد من المطورين يعملون على ميزات مختلفة، فإنها يمكن أن يكون كل فروع منفصلة الخاصة بهم، ثم دمج جذع عند الانتهاء من ذلك وإرسال ميزة لاختبارها دون اختبار الحاجة إلى التحول إلى فروع متعددة لاختبار ميزات مختلفة.
كما مكافأة إضافية، وهناك بعض مستوى اختبار التكامل التي تأتي تلقائيا.
وأعتقد أن أي من الاستراتيجية يمكن استخدامها مع التطوير المستمر بشرط أن تتذكر واحدة من المبادئ الرئيسية التي تلتزم كل مطور لجذع / الخط الرئيسي كل يوم.
لقد تم القيام ببعض القراءة من هذا الكتاب على سي والكتاب جعل تشير إلى أن المتفرعة من قبل الافراج عن استراتيجية المتفرعة المفضل لديهم. علي ان اوافق. المتفرعة من ميزة لا معنى لي عند استخدام سي.
سأحاول وشرح لماذا أنا أفكر بهذه الطريقة. ويقول ثلاثة مطوري كل اتخاذ فرع للعمل على ميزة. ستستغرق كل ميزة عدة أيام أو أسابيع حتى تنتهي. لضمان اندماج الفريق بشكل مستمر يجب أن تلتزم الفرع الرئيسي مرة واحدة على الأقل في اليوم. بمجرد أن تبدأ في القيام بذلك فإنها تفقد فائدة إنشاء فرع الميزة. لم تعد تغييراتهم منفصلة عن جميع التغييرات الأخرى للمطور. هذا هو الحال، لماذا تهتم لخلق فروع ميزة في المقام الأول؟
يتطلب استخدام المتفرعة من قبل الإصدار أقل بكثير دمج بين الفروع (دائما شيء جيد)، يضمن أن جميع التغييرات الحصول على أساب متكامل و (إذا فعلت بشكل صحيح) يضمن قاعدة التعليمات البرمجية الخاصة بك في دائما على استعداد للافراج عنهم. الجانب إلى المتفرعة من قبل الإفراج هو أن عليك أن تكون أكثر حذرا إلى حد كبير مع التغييرات. مثلا إعادة بيع كبيرة يجب أن يتم بشكل متزايد، وإذا كنت قد قمت بالفعل دمج ميزة جديدة التي لا تريد في الإصدار التالي ثم يجب أن تكون مخفية باستخدام نوع من ميزة تبديل آلية.
هناك أكثر من رأي واحد حول هذا الموضوع. هنا هو مشاركة بلوق وهو الموالية ميزة المتفرعة مع سي.
الافراج عن فروع مفيدة جدا، وحتى مطلقة تماما، إذا كنت بحاجة إلى الحفاظ على عدة إصدارات من التطبيق الخاص بك.
ميزة فروع أيضا مريحة للغاية، لا سيما إذا كان مطور واحد يحتاج إلى العمل على تغيير كبير، في حين أن آخرين لا يزالون الافراج عن الإصدارات الجديدة.
لذلك بالنسبة لي باستخدام كلتا الآليتين هي استراتيجية جيدة جدا.
وصلة مثيرة للاهتمام من كتاب سفن.
لقد جئت مؤخرا إلى مثل هذا النموذج عند استخدام جيت. على الرغم من أنه تم وضع علامة على سؤالك "سفن"، قد تكون لا تزال قادرا على الاستفادة من ذلك.
التكامل المستمر يمكن أن يحدث إلى حد ما في فرع "تطوير" (أو ما تسمونه) في هذا النموذج، على الرغم من وجود فروع طويلة المدى تشغيل الإصدارات المستقبلية لن تجعل من جامدة جدا للنظر في كل تغيير يحدث لرمز في مكان ما. يبقى السؤال، ما إذا كنت تريد حقا ذلك. مارتن فاولر يفعل.
يجب أن لا يكون التكامل المستمر أي نوع من العوامل في تحديد استراتيجية التفرع الخاص بك. يجب اختيار النهج المتفرع الخاص بك على أساس فريقك، ونظام قيد التطوير والأدوات المتاحة لك.
وقد قلت ذلك .
ليس هناك سبب لعدم استخدام سي في كل من النهج التي تصف تلك النهج تعمل بشكل جيد جدا في الجمع بين أي من العملين "أفضل" من سي الأخرى يجعل الشعور الكلي مع جذع غير مستقر.
تم الإجابة على كل هذا في السؤال الرابع على الصفحة التي أخذت الرسوم البيانية من: blogs. collab / التخريب / 2007/11 / المتفرعة سترات /
طالما أنك تفهم المبادئ، يمكنك دائما إعادة اختراع أفضل الممارسات. إذا كنت لا تفهم المبادئ، فإن أفضل الممارسات سوف يأخذك قبل أن ينهار بسبب بعض المتطلبات الخارجية المتضاربة.
اقرأ الرابط. بمجرد الحصول على الأساسيات، قراءة المقال التالي من قبل هنريك كنيبرج الموقر. وسوف تساعدك على ربط النموذج الرئيسي مع التكامل المستمر.
عندما بدأنا فريقنا ورثنا استراتيجية قائمة على الإصدار من البائع التي وضعت في الأصل النظام كنا على وشك الحصول على المسؤول عن. عملت حتى الوقت الذي طلب فيه عملائنا أن العديد من الميزات المتقدمة لا ينبغي أن تدرج في إصدار (f. y.i.
خطوط 250K من التعليمات البرمجية،
2500 الملفات، سكروم مع زب سدلك).
ثم بدأنا النظر في الفروع القائمة على ميزة. هذا عمل أيضا لفترة من الوقت - مثل 2 أشهر حتى النقطة أدركنا أن عملية اختبار الانحدار لدينا سوف يستغرق أكثر من 2 أسابيع التي جنبا إلى جنب مع عدم اليقين من ما سيصدر صدر خلق إزعاج كبير.
وجاء "مسمار في التابوت" النهائي من استراتيجيات سك نقية عندما قررنا أنه ينبغي أن يكون 1. الجذع مستقرة و 2. يجب أن يحتوي الإنتاج ست، وات، والانحدار اختبار بيناريز (وليس فقط مصدر - أعتقد سيسي)
وهذا يقودنا إلى وضع استراتيجية هي مزيج بين ميزة واستراتيجيات سك القائمة على إطلاق سراح.
لذلك لدينا جذع. كل سباق نحن فرع فرع العدو (لغير الناس رشيقة - سباق هو مجرد جهد التنمية محاصر الوقت مع مخرجات متغيرة على أساس التعقيد.) من فرع العدو نخلق فروع ميزة والتنمية الموازية يبدأ فيها. وبمجرد الانتهاء من الميزات واختبار النظام، ونحن نتلقى نية لنشرها، يتم دمجها إلى فرع العدو - بعض قد تطفو عبر العديد من سباقات السرعة، وعادة ما تكون أكثر تعقيدا. مرة واحدة في سباق بالقرب من نهايته والميزات كاملة. نحن "إعادة تسمية" فرع العدو إلى "الانحدار" (وهذا يسمح كروزيكونترول لاستلامه من دون أي إعادة تشكيل) ثم يبدأ الانحدار / اختبار التكامل على إير بناء سيسي. عندما يتم ذلك كله، فإنه يذهب في الإنتاج.
وباختصار، يتم استخدام الفروع القائمة على ميزة لتطوير واختبار النظام ووظائف وات. فرع العدو (حقا فرع الإفراج) يستخدم لدمج انتقائي الميزات على الطلب والتكامل الاختبار.
الآن هنا هو السؤال للمجتمع - نحن من الواضح أن تواجه مشكلة في أداء التكامل المستمر بسبب حقيقة أن التنمية تحدث على العديد من الفروع وإعادة تشكيل النفقات العامة من كروزيكونترول. يمكن لشخص ما اقتراح والمشورة؟
الطريقة التي أرى أنها تريد أن يكون مجموعة محدودة من الفروع حيث يمكنك التركيز. نظرا لأنك تريد إجراء اختبارات، ومقاييس جودة الشفرة، والعديد من الأمور المثيرة للاهتمام للتشغيل باستخدام عمليات الإنشاء، فإن وجود عدد كبير جدا من التقارير سيجعلك تفوت المعلومات.
عندما وماذا لفرع، وعادة ما يعتمد على حجم الفريق وحجم الميزات التي يجري تطويرها. لا أعتقد أن هناك قاعدة ذهبية. تأكد من استخدام إستراتيجية يمكنك من خلالها الحصول على التعليقات في وقت مبكر / في كثير من الأحيان، والتي تتضمن تضمين الجودة من بداية الميزات. نوعية بت، يعني أنه كما كنت أتمتة كما فريق يتطور، إذا كنت فرع لميزة كبيرة مجموعة فريق هو بناء، لديك فلدي يكون لها جودة المشاركة في الفريق أيضا.
ملاحظة: أين حصلت على تلك المراجع؟ - لا يشعر أن تلك الرسوم البيانية تمثل جميع الخيارات.
تحديث 1: توسيع لماذا قلت انها ليست قاعدة ذهبية. أساسا لفرق صغيرة نسبيا لقد وجدت أنه من الأفضل باستخدام النهج الذي هو مزيج. يتم إنشاء فروع ميزة إذا كان شيئا طويلا وجزء من الفريق سيستمر إضافة ميزات أصغر.
أعتقد أن الأدوات التي تستخدمها عامل كبير هنا.
إذا كنت تستخدم التخريب، التمسك الخيار 1 والافراج عن الفروع. إذا كنت تستخدم جيت، الخيار 2 سوف تعمل بشكل جيد بالنسبة لك.
No comments:
Post a Comment