Кіріспе

Бұтақтау, нұсқаны басқару және бағдарламалық қамтамасыз ету конфигурациясын басқаруда нұсқаулы объектінің (мысалы, бастапқы код файлы немесе каталог ағашы) көшірмесін жасау болып табылады. Әрбір объекті кейіннен жеке және параллель түрде өзгертілуі мүмкін, осылайша объектілер өзгеше болады. Осы контексте объектілер бұтақтар деп аталады. Нұсқаны басқару жүйесінің қолданушылары кез келген бұтақты бұтақтай алады. Бұтақтар ағаштар, ағындар немесе код жолдары деп те аталады. Тұпкі бұтақ кейде бас бұтақ, жоғары ағымдық бұтақ (немесе жай ғана жоғары ағымдық, әсіресе егер бұтақтарды әртүрлі ұйымдар немесе жеке тұлғалар қолдаса) немесе бастапқы ағын деп аталады.

Көшегі

Балалық тармақтар – ата-анасы бар тармақтар; ата-анасы жоқ тармақ түпнұсқа немесе негізгі желі деп аталады. Түпнұсқа кейде HEAD деп те аталады, бірақ дұрысы бойынша HEAD тармаққа емес, берілген тармақтағы соңғы коммитқа қатысты, ал түпнұсқаның да, әрбір аталатын тармақтың да өз HEAD-і болады. Түпнұсқа әдетте жобаның даму негізі болып табылады. Егер әзірлеушілер тек түпнұсқада жұмыс істесе, онда ол жобаның ең соңғы нұсқасын қамтиды, бірақ соның салдарынан ең тұрақсыз нұсқа болуы мүмкін. Тағы бір тәсіл – түпнұсқадан тармақ бөліп, сол тармақта өзгерістерді жүзеге асыру және тармақ тұрақты әрі жұмыс істейтіні дәлелденгеннен кейін өзгерістерді түпнұсқаға қайта біріктіру. Даму режиміне және коммит саясатына байланысты түпнұсқада ең тұрақты, ең тұрақсыз немесе олардың арасындағы нұсқа болуы мүмкін. Түпнұсқаны «басты желі», «негізгі желі» және «мастер» терминдерімен де белгілейді, бірақ кейбір жағдайларда олар ұқсас, бірақ әртүрлі мағыналарда қолданылады. Көбінесе негізгі әзірлеу жұмысы түпнұсқада жүргізіледі, ал тұрақты нұсқалар тармақталса, кез келген қателерді түзетулер тармақтардан түпнұсқаға біріктіріледі. Егер болашақ нұсқаларды дамыту түпнұсқа емес тармақтарда жүргізілсе, әдетте бұл жиі өзгермейтін жобалар үшін немесе өзгерістерді түпнұсқаға енгізуге дайын болғанға дейін дамытуға көп уақыт кетеді деп күтілетін жағдайларда жасалады.

Бірігу

Бранчтау көбінесе өзгерістерді кейіннен бастапқы тармаққа біріктіру немесе интеграциялау мүмкіндігін білдіреді. Көбінесе өзгерістер түпкі тармаққа қосылады, тіпті ол бастапқы тармақ болмаса да. Біріктірілуі жоспарланбаған бранч (мысалы, үшінші тараптың үйлеспейтін лицензиясы бойынша қайта лицензияланғандықтан немесе басқа мақсатта қолданылуы үшін жасалғандықтан) әдетте форк деп аталады.

Филиалдарды құруға ынталандыру

Тармақтар бағдарламалық жасақтаманың бөліктерін параллельді түрде әзірлеуге мүмкіндік береді. Ірі жобалар көптеген мамандықтарды талап етеді, оның ішінде бағдарламашылар, құрастыру менеджерлері және сапаны бақылау қызметкерлері. Сонымен қатар, әртүрлі операциялық жүйелердегі әр түрлі нұсқаларды қолдау қажет болуы мүмкін. Тармақтар код базасын тұрақсыздандырмай, өзгерістерді оқшаулауға мүмкіндік береді, мысалы, қателерді жою, жаңа мүмкіндіктерді қосу және нұсқаларды біріктіру. Бұл өзгерістер кейіннен сынақтан өткен соң біріктірілуі (жайындырылуы) мүмкін.

Даму саласы

Бағдарламалық жасақтаманың даму тармағы немесе даму ағашы – әзірлену үстіндегі, әлі ресми түрде жарияланбаған нұсқа. Ашық кодты қоғамдастықта "жариялау" түсінігі көбінесе метафоралық болып келеді, себебі кез келген адам қалаған нұсқаны, ол даму тармағында болсын, болмасын, алуға мүмкіндік алады. Көбінесе, болашақта келесі басты нұсқаға айналатын нұсқа даму тармағы деп аталады. Дегенмен, бір уақытта бағдарламалық жасақтаманың бірнеше келесі нұсқасы әзірленуі мүмкін. Көбінесе даму тармағы – негізгі тармақ болып табылады. Кейбір нұсқаларды басқару жүйелерінде негізгі даму тармағы үшін арнайы терминология бар. Мысалы, CVS жүйесінде ол "MAIN" тармағы деп аталады. Git жүйесі әдепкі бойынша "master" қолданады, бірақ GitHub және GitLab Джордж Флойдтың қазасынан кейін "main" тармағына көшті.

Көлеңкелі немесе сиқырлы бұтақтар

CVSNT жүйесінде көлеңкелі немесе сиқырлы тармақ жоғары ағыстағы тармақта жасалған өзгерістерді "көлеңкелейді", бұл шағын өзгерістерді оңай басқаруға мүмкіндік береді (cvc – rPath компаниясы жасаған пакеттерге арналған нұсқаларды басқару жүйесін қамтитын ашық кодты пакет құру жүйесі).

Қоймалардың клондары

Бөлінген нұсқаларды басқару жүйелерінде репозиторийдің толық көшірмесі, тармақтармен бірге, алынып, одан әрі жұмыс істеуге болады. Монотон (mtn), Меркуриал (hg) және git оны "көшірме" (clone) деп атайды; Bazaar оны "тармақ" (branch) деп атайды. Darcs сияқты кейбір бөлінген нұсқаларды басқару жүйелерінде репозиторийлер мен тармақтар арасында ешқандай айырмашылық жоқ; осы жүйелерде репозиторийдің көшірмесін алу тармақ құрумен бірдей.