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) муҳим аст Интегратсия камтар, метавонад мураккабтар бошад
Риски ихтилофот Камтар ихтилофоти калон, вале бештар хурдтар, зуд-зуд Бештар ихтилофоти калон дар омезиши шохаҳои калон
Вақти баромад ба истеҳсолот Беҳтарин ва зудтар (continuous delivery) Баъдтар ва камтар баромад мекунад
Талабот ба тестҳо Дар сатҳи баланд автоматизатсияшудаи тестҳо Тестҳо метавонанд дертар дар давра иҷро шаванд
Ҳаҷми гурӯҳ Барои гурӯҳҳои хурду миёна мувофиқ, вале бо интизом scalable Барои гурӯҳҳои калон мувофиқ

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 // Мумкин аст, ки бо коди функсияи A ихтилофот пайдо шаванд