Ana içeriğe geç

Trunk-Based Development

Okunuşu
trank beyst divelıpmınt
Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/trunk-based-development

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 main olan 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

Trunk-based iş akışında kısa ömürlü bir branchbash
# 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 day

Sı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

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar