التفرع (التحكم في الإصدار)

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

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

صُندُوق

الفروع الفرعية هي فروع لها فرع أب؛ أما الفرع الذي ليس له فرع أب فيُشار إليه بالجذع أو الفرع الرئيسي . [ 1 ] يُشار إلى الجذع أحيانًا بشكل غير دقيق باسم "الرأس"، ولكن في الواقع، لا يُشير مصطلح "الرأس" إلى فرع بحد ذاته، بل إلى آخر تحديث تم إجراؤه على فرع معين، ولكل من الجذع وكل فرع مُسمى رأسه الخاص. يُقصد بالجذع عادةً أن يكون أساس المشروع الذي يتطور عليه العمل. إذا كان المطورون يعملون حصريًا على الجذع (ما يُسمى بالتطوير القائم على الجذع )، فإنه يحتوي دائمًا على أحدث إصدار من المشروع، ولكنه قد يكون أيضًا الإصدار الأقل استقرارًا . هناك طريقة أخرى تتمثل في فصل فرع من الجذع، وإجراء تغييرات عليه، ثم دمج هذه التغييرات مرة أخرى في الجذع عندما يثبت استقرار الفرع وكفاءته. اعتمادًا على نمط التطوير وسياسة الالتزام ، قد يحتوي الجذع على الإصدار الأكثر استقرارًا أو الأقل استقرارًا أو إصدار بينهما. تشمل المصطلحات الأخرى للجذع: " الأساس" و "الفرع الرئيسي" و "الفرع الرئيسي"، على الرغم من أن هذه المصطلحات تُستخدم في بعض الحالات بمعانٍ متشابهة ولكنها مختلفة - انظر قسم "التحكم في الإصدار" § "  المصطلحات الشائعة" . غالبًا ما يتم العمل الرئيسي للمطورين في الفرع الرئيسي (trunk)، وتُنشأ فروع للإصدارات المستقرة، وتُدمج إصلاحات الأخطاء العرضية من الفروع إلى الفرع الرئيسي. وعندما يتم تطوير الإصدارات المستقبلية في فروع غير الفرع الرئيسي، فعادةً ما يكون ذلك للمشاريع التي لا تشهد تغييرات متكررة، أو حيث يُتوقع أن يستغرق تطوير التغيير وقتًا طويلاً حتى يصبح جاهزًا للدمج في الفرع الرئيسي.

الاندماج

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

دوافع التفرع

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

يمكن أيضًا استخدام الفروع لتطبيق تفرعات الموردين ، وهي استراتيجية لاستخدام وتتبع وتعديل شفرة المصدر المنشورة من قِبل جهات خارجية ("موردين"). في هذا النهج، الشائع منذ عهد نظام إدارة الإصدارات المتغيرة ( CVS )، يُنشأ فرع منفصل للاحتفاظ بشفرة المورد. يُحدَّث هذا الفرع بإصدارات جديدة من المصدر الرئيسي ويُدمج في قاعدة الشفرة الرئيسية عند الضرورة. [ 4 ]

فرع التطوير

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

غالبًا ما يكون فرع التطوير هو الفرع الرئيسي . بعض أنظمة التحكم في الإصدارات لديها مصطلحات خاصة لفرع التطوير الرئيسي. على سبيل المثال، في نظام CVS ، يُطلق عليه اسم الفرع "MAIN". يستخدم Git الفرع "master" افتراضيًا، على الرغم من أن GitHub [ 5 ] [ 6 ] و GitLab تحولا إلى استخدام الفرع "main" بعد مقتل جورج فلويد .

أغصان الظل أو السحر

في CVSNT ، يقوم الفرع الظلي أو السحري "بإخفاء" التغييرات التي تم إجراؤها في الفرع الأصلي، لتسهيل الحفاظ على التغييرات الصغيرة (cvc هو نظام بناء حزم مفتوح المصدر يتضمن نظامًا للتحكم في المراجعات للحزم التي ينتجها rPath ).

التحكم في المراجعة الموزعة

نسخ المستودع

في أنظمة التحكم في الإصدارات الموزعة ، يمكن نسخ المستودع بأكمله، بما في ذلك الفروع، والعمل عليه لاحقًا. يُطلق على هذه العملية اسم "الاستنساخ" في أنظمة Monotone (mtn) و Mercurial (hg) و Git ، بينما يُطلق عليها اسم "الفرع" في Bazaar .

في بعض أنظمة التحكم في المراجعات الموزعة ، مثل Darcs ، لا يوجد تمييز بين المستودعات والفروع؛ في هذه الأنظمة، يكون جلب نسخة من المستودع مكافئًا للتفرع.

انظر أيضاً

مراجع

  1. بيركزوك، ستيف؛ أبلتون، براد (2003). أنماط إدارة تكوين البرمجيات: العمل الجماعي الفعال، التكامل العملي . أديسون-ويسلي . ISBN 0-20174117-2تم الاطلاع عليه بتاريخ 24-05-2007 .
  2. أبلتون، براد؛ بيركزوك، ستيفن؛ كابريرا، رالف؛ أورنشتاين، روبرت (8 فبراير 1998). "الخطوط المبسطة: أنماط التفرع لتطوير البرمجيات المتوازية" ( ملف PDF ) . هيلسايد . تاريخ الاسترجاع: 12 أغسطس 2009 .
  3. بيلي، ديريك (15 يوليو 2009). "الجزء الأول: لماذا" . التحكم في المصدر حسب الفرع لكل ميزة . لوس تيكيز . تم الاسترجاع في 12 أغسطس 2009 .
  4. نيلسون-سميث، ستيفن (11-10-2013). البنية التحتية القائمة على الاختبار باستخدام Chef: تطبيق تطوير البرمجيات القائم على السلوك على البنية التحتية كبرنامج . دار نشر أورايلي ميديا. رقم ISBN 978-1-4493-7260-6تم الاطلاع عليه بتاريخ 26-05-2025 .
  5. والين، جاك (22 سبتمبر 2020). "غيت هاب سيستبدل الفرع الرئيسي (master) بالفرع الرئيسي (main) بدءًا من أكتوبر: ما يحتاج المطورون إلى فعله الآن" . تيك ريبابليك . تم الاطلاع عليه بتاريخ 24 أبريل 2022 .
  6. هاينز، كارولين (24 نوفمبر 2020). "لماذا أعادت GitHub تسمية فرعها الرئيسي إلى main؟" . TheServerSide . تم الاسترجاع في 24 أبريل 2022 .