Develop Branch, Git Flow'da bir sürüm hazırlamadan önce tamamlanmış tüm feature dallarının birleştirildiği ana entegrasyon dalıdır. Main'den farklı olarak develop, en yeni ancak henüz yayınlanmamış değişiklikleri içerir — burada ekip geliştiricilerinin günlük kod entegrasyonu gerçekleşir. Atlassian, 2024'e göre develop, Git Flow'da zorunlu bir daldır ve ekip için istikrarlı bir entegrasyon ortamı sağlar.
Önemli noktalar
Develop Branch (geliştirme dalı), Git Flow'da tüm geliştiricilerden kod entegrasyonu için merkezi merkez görevi gören uzun ömürlü bir daldır. Geliştirme tamamlandıktan ve kod incelemesinden sonra feature dalları burada birleştirilir.
develop'daki kod her zaman bir sürüm oluşturmaya hazır durumdadır, ancak henüz üretime dağıtılmamıştır. Bu, develop'daki tüm özelliklerin inceleme, test ve entegrasyon kontrollerinden geçtiği, ancak henüz sürüm döngülerini beklediği anlamına gelir.
Her kod sürümünün bir yayın olduğu main'in aksine, develop sürekli bir değişiklik akışı içerir. Feature dalları birleştirildikçe develop'da commit'ler görünür ve bu günde birkaç kez gerçekleşebilir.
Vincent Driessen, 2010'a göre develop, başarılı bir dallanma modelinin önemli bir öğesidir çünkü taslak çalışmayı sürüme hazır sürümlerden ayırır.
develop ve main arasındaki farkları anlamak, doğru Git Flow iş akışı için kritik öneme sahiptir. Bu dallar farklı işlevlere hizmet eder ve farklı kararlılık gereksinimlerine sahiptir.
| Özellik | Develop | Main / Master |
|---|---|---|
| Amaç | Yeni özelliklerin entegrasyonu | Kararlı sürüm kodu |
| Kararlılık | Yüksek (testten sonra) | Maksimum (üretim) |
| Commit sıklığı | Günlük (feature birleştirme) | Sürüm başına (1-4 haftada bir) |
| Dal kaynağı | Ondan feature oluşturulur | Ondan hotfix oluşturulur |
| Birleştirme | PR aracılığıyla feature'dan | merge aracılığıyla release'den |
develop ve main olarak ayrılma, ekibin üretim sürümü kararlılığını riske atmadan sürekli olarak yeni kod entegre etmesine olanak tanır. Geliştiriciler, resmi sürümden önce bile PR onayından hemen sonra kodlarını develop'ta görebilirler.
Git Flow modelinde develop, feature dalları (değişiklik kaynağı) ve release dalları (sürüm hazırlığı) arasında merkezi bir konuma sahiptir. Bu hiyerarşiyi anlamak etkili dallanmanın temelidir.
Bu yapı, develop'ın her zaman tüm yeni özelliklerle birlikte en son kodu içermesini, main'in ise yalnızca doğrulanmış üretim kodunu içermesini sağlar. Bu, App Store ve Google Play'de uzun inceleme döngüleri olan mobil projeler için özellikle önemlidir.
Develop, feature, release ve hotfix dalları arasında merkezi bağlantı görevi görür. Birleştirme yönlerini anlamak, çakışmaları ve commit kaybını önlemek için çok önemlidir.
develop'daki kod kalitesi yüksek olmalıdır, ancak mutlak değildir. Her hatanın acil bir hotfix anlamına geldiği main'in aksine develop, sürümden önce düzeltilecek küçük kusurlara izin verir.
develop'ta birleştirmeden önce kod için minimum gereksinimler:
CI/CD hattındaki otomatik kontroller, develop'a her push'ta çalıştırılmalıdır. Derleme bozulursa, sorumlu geliştirici sorunu bir saat içinde düzeltmeli veya commit'ini geri almalıdır.
develop için GitHub Actions kurulumu, her PR'ın birleştirmeden önce otomatik kontrollerden geçmesini sağlar. Tipik bir hat, derleme, testler ve linting içerir.
# GitHub Actions — birleştirmeden sonra develop'ı kontrol et
name: Develop CI
on:
pull_request:
branches: [develop]
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Unit tests
run: ./gradlew testDebug
- name: Lint
run: ./gradlew lint
- name: Build
run: ./gradlew assembleDebug
develop'a birleştirme, entegrasyon dalının kararlılığını korumak için katı kurallara uymalıdır. Bu kuralların ihlali çakışmalara, bozuk derlemelere ve ekip zamanının boşa harcanmasına yol açar.
PR güncel olmalı kuralı özellikle önemlidir. Bir feature dalı bir hafta önce oluşturulduysa ve develop 50 commit ilerlediyse, doğrudan birleştirme, develop yerine PR bağlamında çözülmesi daha iyi olan çakışmalara yol açabilir.
Dal koruma kuralları, GitHub, GitLab veya Bitbucket düzeyinde develop'ta hatalı değişiklikleri önleyen ayarlardır. Kazara yapılan bir push'un bile entegrasyon dalını bozmamasını sağlarlar.
develop için önerilen koruma kuralları:
develop korumasını ayarlamak 10 dakika sürer ancak bozuk bir entegrasyon dalıyla ilgili haftalarca sürecek kesintileri önler. Çok platformlu ekipleri olan mobil projeler için bu özellikle önemlidir.
Tipik bir geliştirici gününü düşünelim: sabah develop'ı günceller, yeni bir feature dalı oluşturur ve görevi tamamladıktan sonra değişiklikleri develop'ta birleştirir.
# Sabah develop senkronizasyonu
git checkout develop
git pull origin develop
# develop'tan yeni feature dalı oluşturma
git checkout -b feature/add-push-notifications
# Özellik üzerinde çalışılıyor...
git add . && git commit -m "Add FCM integration"
# Geliştirme sırasında develop'ı güncelleme
git fetch origin develop
git rebase origin/develop
# PR onayından sonra — yerel develop'ı güncelle
git checkout develop
git pull origin develop
git branch -d feature/add-push-notifications
develop'daki git pull komutu aynı anda iki işlem gerçekleştirir: git fetch (sunucudan yeni commit'leri alır) ve git merge (bunları yerel dala birleştirir). develop için bu standart senkronizasyon yöntemidir.
Derlemeyi bozan kod develop'a girerse hızlı hareket etmek gerekir. develop'ın her saatlik kesintisi, tüm geliştirme ekibi için engellenmiş iş demektir.
Derlemeyi bozan kod develop'a girerse sorunlu değişiklikleri geri alan yeni bir commit oluşturmak için git revert kullanın. develop'ta git reset kullanmayın — diğer ekip üyelerinin zaten sahip olduğu geçmişi yeniden yazar.
# Sorunlu commit'i bulma
git log --oneline develop
# revert ile commit'i geri alma (güvenli)
git revert a1b2c3d
# Düzeltmeyi uzak develop'a gönderme
git push origin develop
# Belirli bir commit'teki değişiklikleri görüntüleme
git show a1b2c3d --stat
Sıkça sorulan sorular
Bir veya iki geliştiricili projeler için develop genellikle gereksizdir — main ve feature dalları yeterlidir. Ekip 3+ kişiye büyüdüğünde, develop tamamlanmamış özellikleri kararlı üretim kodundan ayırmak için gerekli hale gelir.
Hayır, profesyonel bir projede develop'a doğrudan commit yapmak yasaktır. Tüm değişiklikler kod incelemesi ve otomatik kontrollerle Pull Request'ten geçer. İstisna, README veya CI yapılandırmasındaki yönetsel düzenlemelerdir, ancak bunlar bile PR aracılığıyla yapılmalıdır.
Trunk-based development'da ayrı bir develop dalı yoktur — tüm geliştiriciler çok kısa feature dalları (1-2 gün) ile main'de çalışır. Bu, yüksek düzeyde test otomasyonuna sahip DevOps kültüründe popüler olan Git Flow'a bir alternatiftir.
Her sürümden sonra, release dalı develop'a geri birleştirilir ve sürüm hazırlığı sırasında yapılan tüm düzeltmeler dahil edilir. Bu yapılmazsa, develop sürüm kodundan ayrışır ve bir sonraki sürümde çakışmalara neden olur.
Develop bozulursa, kıdemli bir geliştirici son kararlı commit'ten bir hotfix dalı oluşturur, sorunu giderir ve özel durumdaki bir PR aracılığıyla düzeltmeyi doğrudan develop'ta birleştirir. Kurtarma sonrasında kök neden analizi yapılır.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.
Ayrıca okuyun