Sobes.tech
Middle

Trunk-Based Development жана Feature Branching ыкмаларынын айырмачылыктары эмнеде?

sobes.tech AI

AIден жооп

Критерий Trunk-Based Development (TBD) Feature Branching (FB)
Негизги шоха Бир негизги шохо (trunk/main/master) Көп узак мөөнөттүү шохолор (develop, release, master)
Бириктирүү жыштыгы Өте көп (күнүнө кеминде бир жолу) Аралык (функция аяктагандан кийин)
Функция шохолорунун өлчөмү Өте кыска мөөнөттүү (бир нече мүнөттөн сааттарга чейин) Узак мөөнөттүү (күндөрдөн апталарга чейин)
Интеграция Үзгүлтүксүз интеграция (CI) негизги болуп саналат Интеграция сейрек, кыйын болушу мүмкүн
Конфликттердин коркунучу Кичүү чоң конфликти, бирок көбүрөөк майда, тез-тез Көп чоң конфликти чоң шохолорду бириктирүүдө
Чыгуу убактысы Жылдам жана тез чыгуу (үзгүлтүксүз жеткирүү) Асыңкы жана сейрек чыгуу
Тест талаптары Жогорку автоматташтырылган тестирлөө деңгээли Тесттер кээде кечирээк циклде аткарылат
Тимдин көлөмү Кичинекей жана орто командаларга ылайыктуу, бирок тартип менен масштабдуу Ири командаларга ылайыктуу

Trunk-Based Development:

  • Кыска өзгөртүүлөрдү түздөн-түз негизги шохого тез-тез интеграциялоо.
  • Катуу тартип, автоматташтырылган тесттер жана функция белгилери талап кылынат.
  • Ири бириктирүүлөрдөн келип чыккан коркунучтарды азайтат.

Feature Branching:

  • Ар бир функция өзүнчө шохоодо иштелип чыгат.
  • Бириктирүү функция аяктагандан кийин гана болот.
  • Шохолор узак жашаса, "каптап" калуу жана татаал конфликттерге алып келиши мүмкүн.

Төмөнкү код мисалы TBD үчүн (жөнөкөйлөтүлгөн):

// Иштөө түз эле main/trunkта жүргүзүлөт
public class FeatureA {
    public void doStuff() {
        // Функция Анын коду
    }
}

// Башка иштеп чыгуучу дээрлик бир убакта main/trunkка комит кылат
public class FeatureB {
    public void doOtherStuff() {
        // Функция Bнын коду
    }
}

Төмөнкү код мисалы FB үчүн (жөнөкөйлөтүлгөн):

// Ишчи 1 feature/A шохосунда иштейт
// git checkout -b feature/A develop
public class FeatureA {
    public void doStuff() {
        // Функция Анын коду
    }
}

// Ишчи 2 feature/B шохосунда иштейт
// git checkout -b feature/B develop
public class FeatureB {
    public void doOtherStuff() {
        // Функция Bнын коду
    }
}

// Функция А аяктагандан кийин, шохо developке бириктирилет
// git checkout develop
// git merge feature/A

// Функция B аяктагандан кийин, шохо developке бириктирилет
// git checkout develop
// git merge feature/B // Мүмкүн конфликттер пайда болушу мүмкүн