Trunk-Based Development
- Okunuşu
- trank beyst divelıpmınt
Kısaca
Trunk-based development, geliştiricilerin küçük değişiklikleri en az günde bir kez ortak ana branch'e birleştirip onu hep yayımlanabilir tuttuğu stratejidir.
Trunk-based development nedir?
Trunk-based development, herkesin çalışmasını trunk (gövde) adı verilen ve genellikle main olarak adlandırılan tek bir ortak branch'e entegre ettiği bir sürüm kontrol iş akışıdır. Geliştiriciler ya doğrudan bu branch'e commit eder ya da bir iki gün içinde birleştirilen çok kısa ömürlü branch'ler kullanır. Amaç, trunk'ı her zaman çalışır ve yayımlanmaya hazır tutmaktır.
Değişiklikler küçük ve sık olduğu için her biri incelenmesi kolaydır ve nadiren büyük merge çakışmalarına yol açar. Hızlı bir otomatik CI hattı her değişiklikte testleri çalıştırır; bu sayede bir bozulma dakikalar içinde fark edilir ve hemen düzeltilir ya da geri alınır. Bitmemiş özellikler feature flag'lerin arkasına gizlenir; bunlar, yeni işlevi hazır olana kadar kullanıcılar için kapalı tutan koddaki anahtarlardır.
Herkesin bir bölümü tek başına yazıp sonunda hepsini birleştirmek yerine, ortak tek bir belgeye her seferinde birkaç cümle ekleyen ve sonucu yeniden okuyan bir grubu düşünün. Trunk-based development, sürekli entegrasyonun (continuous integration) ve sürekli teslimatın (continuous delivery) arkasındaki temel uygulamalardan biridir ve günde birçok kez dağıtım yapan ekiplerde yaygındır.
Genellikle uzun ömürlü feature branch'lerle ve ayrı develop, release ve hotfix branch'leri kullanan bir model olan Git Flow ile karşılaştırılır. Bu yaklaşımlar işi haftalarca yalıtabilir; bu da sancılı merge'lere ve gecikmiş geri bildirime yol açar. Trunk-based development yine de pull request ve kod incelemesi kullanır; fark, branch'lerin küçük kalması ve hızla geri birleştirilmesidir.
Önemli noktalar
- Herkes, genellikle
mainolan tek bir ortak branch'e entegre eder. - Branch'ler kullanılıyorsa en fazla bir iki gün yaşar.
- Her değişiklikteki otomatik testler trunk'ı yayımlanabilir tutar.
- Feature flag'ler bitmemiş işi kullanıcılardan gizler.
- Uzun ömürlü feature branch'lere kıyasla merge çakışmalarını azaltır.
Örnek
# Start a short-lived branch from an up-to-date trunk
git switch main
git pull
git switch -c add-search-button
# Make a small change and commit it
git commit -am "Add search button behind a feature flag"
# Stay current with main, push, and open a small pull request
git pull --rebase origin main
git push -u origin add-search-button
# CI runs, a teammate reviews, and the branch merges the same daySık sorulan sorular
Trunk-based development ile Git Flow arasındaki fark nedir?
Git Flow, develop ve release branch'leri gibi birkaç uzun ömürlü branch kullanır ve özellikleri daha büyük gruplar halinde birleştirir. Trunk-based development ise tek bir ana branch tutar ve ona sürekli küçük değişiklikler birleştirir; bu da sık yayın yapan ekiplere uygundur.
Trunk-based development pull request olmaması demek midir?
Hayır. Birçok ekip, her branch bir iki gün içinde birleştirildiği sürece hızlı pull request'ler ve kod incelemesiyle kısa ömürlü branch'ler kullanır. Küçük ya da çok deneyimli ekipler bazen doğrudan trunk'a commit eder.
Trunk-based development ile bitmemiş özellikler nasıl yayına alınır?
Kodu birleştirir, ancak tamamlanıp test edilene kadar bir feature flag ile kapalı tutarsınız. Bu, yarım kalmış özellikleri kullanıcılara göstermeden işin erken entegre edilmesini sağlar.
İlgili sayfalar
- BranchSürüm Kontrolü, s. 2Git'te branch, bir özellik ya da düzeltme üzerinde, birleştirene kadar ana kodu etkilemeden çalışmanızı sağlayan bağımsız bir geliştirme hattıdır.
- CI/CDDevOps ve Bulut, s. 9CI/CD, kod değişikliklerini sık sık derleyen, test eden ve yayınlayan otomatik pratikler bütünüdür; yazılım kullanıcılara hızlı ve güvenli biçimde ulaşır.
- Merge ConflictSürüm Kontrolü, s. 30Merge çakışması, iki branch bir dosyanın aynı satırlarını değiştirdiği için Git'in otomatik birleştiremediği, sonuca birinin karar vermesi gereken durumdur.
- Pull RequestSürüm Kontrolü, s. 32Pull request, bir branch'teki değişiklikleri başka bir branch'e birleştirme önerisidir; kod birleşmeden önce ekibe inceleme, tartışma ve test alanı sunar.
- Code ReviewSürüm Kontrolü, s. 4Code review, kod değişikliklerinin birleştirilmeden önce başka geliştiricilerce incelenmesidir; hataları yakalar, kaliteyi artırır, bilgi paylaşımını sağlar.
- MergeSürüm Kontrolü, s. 29Git'te merge, bir branch'teki değişiklikleri başka bir branch'e katarak ayrı geliştirme hatlarını tek ve ortak bir geçmişte yeniden birleştirir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin