Middle
Trunk-Based Development və Feature Branching yanaşmaları arasındakı fərqlər nədir?
sobes.tech Süni İntellekt
AI-dan cavab
| Kriteriya | Trunk-Əsaslı İnkişaf (TBD) | Funksiya Filialları (FB) |
|---|---|---|
| Əsas filial | Bir əsas filial (trunk/main/master) | Bir neçə uzunömürlü filiallar (develop, release, master) |
| Birleştirmə tezliyi | Çox tez (gündə ən az bir dəfə) | Nadir (funksiya tamamlandıqdan sonra) |
| Funksiya filiallarının ölçüsü | Çox qısa müddətlidir (bir neçə dəqiqədən saatlara qədər) | Uzunömürlü (günlərdən həftələrə qədər) |
| İnteqrasiya | Davamlı inteqrasiya (CI) vacibdir | Daha az tez baş verir, daha mürəkkəb ola bilər |
| Münaqişə riski | Kiçik münaqişələr, lakin daha çox kiçik və tez-tez | Böyük münaqişələr böyük filialların birləşməsində olur |
| Yayım vaxtı | Sürətli və tez-tez (davamlı çatdırılma) | Daha yavaş və daha az tezliklə |
| Test tələbləri | Yüksək avtomatlaşdırma səviyyəsi | Testlər daha sonra həyata keçirilə bilər |
| Komanda ölçüsü | Kiçik və orta komandalar üçün uyğundur, intizamla genişlənir | Böyük komandalar üçün uyğundur |
Trunk-Əsaslı İnkişaf:
- Kiçik dəyişikliklərin əsas filialda tez-tez inteqrasiya olunmasına yönəlib.
- Sərt disiplin, avtomatlaşdırılmış testlər və funksional bayraqlar tələb edir.
- Böyük birləşmələrlə əlaqəli riskləri azaldır.
Funksiya Filialları:
- Hər funksiya ayrı filialda inkişaf etdirilir.
- Yalnız funksiya tamamlandıqdan sonra birləşdirilir.
- Əgər filiallar uzun müddət yaşayarsa, "suya batma" və mürəkkəb münaqişələrə səbəb ola bilər.
TBD üçün nümunə kod (sadələşdirilmiş):
// İnkişaf birbaşa main/trunk-də həyata keçirilir
public class FeatureA {
public void doStuff() {
// A funksiyasının kodu
}
}
// Digər bir inkişafçı demək olar ki, eyni zamanda main/trunk-ə commit edir
public class FeatureB {
public void doOtherStuff() {
// B funksiyasının kodu
}
}
FB üçün nümunə kod (sadələşdirilmiş):
// İnkişafçı 1 feature/A filialında işləyir
// git checkout -b feature/A develop
public class FeatureA {
public void doStuff() {
// A funksiyasının kodu
}
}
// İnkişafçı 2 feature/B filialında işləyir
// git checkout -b feature/B develop
public class FeatureB {
public void doOtherStuff() {
// B funksiyasının kodu
}
}
// A funksiyası tamamlandıqdan sonra, filial develop-ə merge edilir
// git checkout develop
// git merge feature/A
// B funksiyası tamamlandıqdan sonra, filial develop-ə merge edilir
// git checkout develop
// git merge feature/B // Konfliktlər ola bilər