موضوع مقاله: انشعاب (کنترل نسخه) | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # انشعاب (کنترل نسخه) | مقدمه: شاخه‌زدن در کنترل نسخه و مدیریت پیکربندی نرم‌افزار، به تکرار یک شیء تحت کنترل نسخه (مانند یک فایل کد منبع یا یک درخت دایرکتوری) گفته می‌شود. | ## بخش 1: انشعاب (کنترل نسخه) | سپس هر شیء می‌تواند به صورت مجزا و همزمان تغییر یابد، به گونه‌ای که شیء‌ها متفاوت شوند. شاخه اصلی بعضی‌وقت‌ها به شاخه والد، شاخه نواری (یا ساده upstream، به ویژه اگر شاخه‌ها توسط سازمان‌ها و یا افراد مختلفی نگهداری شوند) یا جریان پشتیبانی شده فراخوانده می‌شود. تنه شاخه‌های فرعی شاخه‌هایی هستند که والد دارند؛ شاخه‌ای بدون والد به عنوان تنها شاخه یا خط اصلی شناخته می‌شود. خط اصلی گاهی به طور فریبنده‌ای به عنوان HEAD نیز اشاره می‌شود، اما به طور صحیح head به یک شاخه نه به عنوان یک شاخه؛ بلکه به عنوان جدیدترین commit در یک شاخه داده شده اشاره دارد، و هر خط اصلی و هر شاخه‌ی نام‌دار دارای head خود است. خط اصلی معمولا به عنوان پایه‌ای برای یک پروژه بر روی که توسعه پیدا می‌کند، منظور می‌شود. اگر توسعه‌دهندگان به طور انحصاری بر روی خط اصلی کار می‌کنند، همواره شامل بهترین فناوری روز پیشرو پروژه است، اما بنابراین ممکن است نیز نسخه‌ای پایدارتر باشد. یک رویکرد دیگر این است که یک شاخه را از خط اصلی جدا کرده، تغییرات را در آن شاخه پیاده‌سازی کرده و زمانی که شاخه به پایداری و کارایی ثابت شده است، تغییرات را به خط اصلی ادغام کرد. | ## بخش 2: انشعاب (کنترل نسخه) | بسته به حالت توسعه و سیاست commit، خط اصلی ممکن است شامل پایدارترین یا ناپایدارترین یا چیزی میان این دو نسخه باشد. اصطلاحات دیگر برای خط اصلی شامل مبنا، خط اصلی و مستر است، اگرچه در برخی موارد این اصطلاحات با معانی مشابه اما متمایز استفاده می‌شوند - به کنترل نسخه اصطلاحات مشترک مراجعه شود. اغلب کار توسعه‌دهندگان اصلی در خط اصلی انجام می‌شود و نسخه‌های پایدار موازی می‌شوند، و به‌صورت مکرر اصلاحات گاهی از شاخه‌ها به خط اصلی ادغام می‌شوند. وقتی توسعه نسخه‌های آینده در شاخه‌های غیر خط اصلی انجام می‌شود، معمولاً برای پروژه‌هایی انجام می‌شود که بطور متداول تغییر نمی‌کنند، یا جایی که انتظار می‌رود تا تا زمان زیادی تا پیاده‌سازی آن آماده برای ادغام در خط اصلی شود. ادغام مقاله اصلی: ادغام (کنترل نسخه) شاخه زدن به طور کلی شامل توانایی ادغام یا یکپارچه‌سازی بعداً تغییرات را به شاخه والد بازمی‌گرداند. یک شاخه که قصد ادغام شدن ندارد (به عنوان مثال چون تحت یک لایسنس ناهمساز توسط شخص ثالث تغییر یافته باشد یا تلاش کند یک هدف متفاوت را خدمت کند) معمولاً با نام یک انشعاب (توسعه نرم‌افزار) شناخته می‌شود. انگیزه های انشعاب شاخه‌ها امکان توسعه قسمت‌های مختلف نرم‌افزار به صورت موازی را فراهم می‌کنند. | ## بخش 3: انشعاب (کنترل نسخه) | پروژه‌های بزرگ نیازمند انجام نقش‌های مختلف مانند توسعه‌دهندگان، مدیران ساخت و تضمین کیفیت نرم‌افزار هستند. علاوه بر این، ممکن است نیاز به حفظ چندین نسخه بر روی پلتفرم‌های عاملی مختلف باشد. شاخه‌ها به همکاران اجازه می‌دهند تا تغییرات را بدون ناپایدار کردن پایگاه کد جدا کنند، به عنوان مثال، اصلاحات برای باگ‌ها، ویژگی‌های جدید و یا ادغام نسخه‌ها. شاخه توسعه یک شاخه توسعه یا درخت توسعه یک نسخه از یک قطعه نرم‌افزار است که در حال توسعه است و هنوز به صورت رسمی منتشر نشده است. در جامعه منبع باز، مفهوم انتشار معمولاً استعاری است، زیرا عموماً هر کسی می‌تواند هر نسخه مورد نظر را چک‌اوت کند، آیا این در شاخه توسعه باشد یا نه. اغلب، نسخه‌ای که در نهایت به عنوان نسخه اصلی بعدی شناخته خواهد شد، شاخه توسعه نامیده می‌شود. با این حال، بسیاری از مواقع زمانی بیشتر از یک نسخه بعدی از نرم‌افزار در حال توسعه در زمان داده شده وجود دارد. | ## جمع‌بندی | شاخه های سایه یا جادو در CVSNT، یک شاخه سایه یا شاخه جادویی "تغییرات" را که در شاخه بالادست ایجاد شده است، پوشش می‌دهد تا نگهداری از تغییرات کوچک راحت‌تر شود (cvc یک سیستم ساخت بسته‌های منبع باز است که یک سیستم کنترل نسخه برای بسته‌های تولید شده توسط rPath را شامل می‌شود.) کنترل بازبینی توزیع شده کلون‌های مخزن در کنترل نسخه توزیع شده، ممکن است کلیه مخزن همراه با شاخه‌ها کپی شده و بر روی آن کار شود.