Bir Repoda Neden Branch Açarız?

8 min read

Table of Contents

Yazılım geliştirirken bazen küçük bir metin değişikliği yaparız, bazen de birden fazla ekranı, veri akışını, test dosyasını ve kullanıcı davranışını etkileyen daha büyük bir geliştirmeye başlarız. İşte ikinci durumda branch açmak yalnızca teknik bir alışkanlık değil, düzenli ve güvenli çalışmanın temel parçasıdır.

Branch Nedir?

Branch, mevcut kod tabanından ayrılan geçici bir çalışma alanıdır.

Ana kod tabanı, yani genellikle master veya main, çalışan ve güvenilir kabul edilen sürümü temsil eder. Branch ise yeni bir özellik, hata düzeltmesi veya deneysel çalışma için açılır.

Basitçe söylemek gerekirse:

Ana kod bozulmadan kalır.
Yeni geliştirme ayrı bir hatta ilerler.
Hazır olunca tekrar ana koda dahil edilir.

Temsili Bir Örnek: Yeni Bir Raporlama Özelliği Geliştirmek

Diyelim ki mevcut bir ürüne yeni bir raporlama alanı ekliyoruz.

Bu raporlama alanında kullanıcılar bazı verileri filtreleyebilecek, farklı sekmeler arasında geçiş yapabilecek, ekip üyelerini belirli kayıtlarla ilişkilendirebilecek ve detay ekranlarında geçmiş güncellemeleri görebilecek.

İlk bakışta bu yalnızca “yeni bir ekran eklemek” gibi görünebilir. Ancak geliştirme ilerledikçe aslında birden fazla parçaya dokunulduğu anlaşılır:

- Yeni bir rapor ekranı
- Filtreleme davranışları
- Ekip ve kişi yönetimi
- Kayıt bazlı güncelleme bilgileri
- Author / Published by / Note gibi ek alanlar
- Detay ekranında timeline görünümü
- Modal başlıkları ve form davranışları
- Backend kontrolleri
- Automated testler
- Manual UI smoke

Yani değişiklik yalnızca görsel bir ekrandan ibaret değildir. Backend, frontend, testler ve kullanıcı akışları birlikte değişmektedir.

Böyle bir geliştirmeyi doğrudan ana branch üzerinde yapmak risklidir. Çünkü geliştirme sırasında bazı ekranlar yarım kalabilir, bazı testler geçici olarak bozulabilir veya henüz netleşmemiş kullanıcı deneyimi detayları olabilir.

İşte bu yüzden ayrı bir branch açarız.

Branch sayesinde ana kod güvenli kalır, yeni özellik ise izole bir çalışma alanında geliştirilir. Özellik tamamlandığında test edilir, kontrol edilir, review’dan geçer ve ancak hazır olduğunda ana koda dahil edilir.

Ana Kod Tabanını Korumak İçin

Branch açmanın en temel nedeni ana kodu korumaktır.

Ana branch genellikle şunu temsil eder:

Çalışıyor.
Deploy edilebilir.
Ekip tarafından güvenilir kabul ediliyor.

Yeni bir özellik üzerinde çalışırken bu güvenilir alanı bozmak istemeyiz. Branch sayesinde geliştirme devam ederken ana kod olduğu gibi kalır.

Bu özellikle büyük geliştirmelerde önemlidir. Çünkü bir özellik tamamlanmadan önce şu aşamalardan geçer:

İlk implementasyon
Düzeltmeler
Refactor
Test ekleme
UI kontrolü
Final acceptance
PR review
Merge

Branch bu sürecin tamamı için güvenli bir çalışma alanı sağlar.

Yarım İşleri Ana Koda Taşımamak İçin

Her geliştirme ilk commit’te kusursuz olmaz.

Bazen önce backend hazırlanır, sonra frontend bağlanır. Bazen testler sonra eklenir. Bazen UI metni değiştirilir. Bazen bir modal başlığı son anda daha anlaşılır hale getirilir.

Bu örnekte de geliştirme birkaç aşamadan geçti:

Özellikler eklendi.
Testler tamamlandı.
UI metinleri sadeleştirildi.
Final acceptance çalıştırıldı.
Manual smoke için hazır hale getirildi.

Branch olmasaydı, bu ara aşamaların tamamı ana kod üzerinde yaşanacaktı. Branch sayesinde sadece tamamlanmış, test edilmiş ve kontrol edilmiş hali ana koda taşınır.

Geliştirmeyi Anlamlı Bir Birim Olarak Toplamak İçin

Branch yalnızca kod izolasyonu sağlamaz. Aynı zamanda yapılan işi anlamlı bir paket haline getirir.

Örneğin bu geliştirme şu şekilde özetlenebilir:

Raporlama ekranı ve içerik güncelleme atıfları eklendi.

Bu başlık altında birden fazla dosya, test ve kullanıcı akışı bulunur. Branch sayesinde tüm bu işler tek bir mantıksal geliştirme olarak takip edilir.

Bu da şu noktalarda büyük kolaylık sağlar:

PR açıklaması yazarken
Kod review yaparken
Test kapsamını kontrol ederken
Hangi değişikliğin neden yapıldığını anlamaya çalışırken
Geri almak gerektiğinde

Testleri Temiz Bir Sınırda Çalıştırmak İçin

Bir branch üzerinde çalışırken final aşamada şu soruyu sorarız:

Bu geliştirme artık güvenli mi?

Bunun cevabı yalnızca “ekranda çalışıyor gibi duruyor” olmamalıdır. Testler, syntax kontrolleri, diff kontrolleri ve manual smoke bu yüzden yapılır.

Bu örnekte final acceptance şunları kapsıyordu:

Working tree clean mi?
Remote sync var mı?
Syntax kontrolleri temiz mi?
İlgili testler geçiyor mu?
UI oturumlu tarayıcıda doğru çalışıyor mu?

Branch burada net bir sınır oluşturur. Geliştirme branch’i temizse, PR açılır. Temiz değilse ana koda dokunmadan branch üzerinde düzeltilir.

Review Sürecini Kolaylaştırmak İçin

Branch açıldığında, yapılan değişiklikler Pull Request veya Merge Request üzerinden incelenebilir.

Bu inceleme sırasında şu sorular sorulur:

Bu geliştirme gerçekten beklenen problemi çözüyor mu?
Gereksiz değişiklik var mı?
Test kapsamı yeterli mi?
Kullanıcı akışı doğru mu?
İsimlendirmeler anlaşılır mı?
Ana kodu riske atacak bir durum var mı?

Branch olmadan bu soruları düzenli şekilde sormak zordur. Çünkü yapılan değişiklikler ana kodla iç içe geçmiş olur.

Geri Alma ve Müdahale Kolaylığı İçin

Her geliştirme sorunsuz ilerlemeyebilir. Bazen bir özellik iptal edilir, bazen kapsam değişir, bazen de geliştirme daha küçük parçalara bölünür.

Branch kullanmak bu durumlarda esneklik sağlar.

Örneğin:

Geliştirme durdurulabilir.
Sadece belirli commit’ler alınabilir.
Branch yeniden düzenlenebilir.
Ana koda hiç dokunmadan silinebilir.
Merge sonrası sorun çıkarsa değişiklik daha kolay izlenebilir.

Bu, özellikle çok dosyalı geliştirmelerde önemlidir.

“Branch Kapandı mı?” Sorusu Neden Önemli?

Bir branch’in kapanması yalnızca kod yazımının bitmesi anlamına gelmez.

Sağlıklı bir kapanış için genellikle şu aşamalar tamamlanmalıdır:

Geliştirme bitti.
Working tree clean.
Remote ile sync.
Automated testler geçti.
Manual UI smoke tamamlandı.
PR açıldı.
Review tamamlandı.
Ana branch’e merge edildi.
Merge sonrası sanity check yapıldı.
Gerekirse feature branch silindi.

Yani branch’in “development olarak kapanması” ile “tamamen kapanması” farklı şeylerdir.

Bu örnekte branch geliştirme açısından hazır hale geldi. Automated acceptance temizdi. Kalan son adım, oturumlu tarayıcıda kullanıcı akışlarını kontrol etmekti. Bu da branch’i merge etmeden önce son güvenlik kapısıdır.

Küçük Değişikliklerde de Branch Gerekli mi?

Her değişiklik için aynı seviyede süreç gerekmez. Ancak ekipli çalışmada veya deploy edilebilir bir ürün üzerinde çalışırken branch açmak çoğu zaman iyi bir pratiktir.

Özellikle şu durumlarda branch açmak doğru yaklaşımdır:

Yeni özellik geliştiriliyorsa
Birden fazla dosya değişecekse
Test eklenecekse
UI ve backend birlikte değişiyorsa
Geliştirme birkaç commit sürecekse
Review gerekiyorsa
Ana kodun stabil kalması önemliyse

Çok küçük typo veya acil hotfix gibi durumlarda süreç daha kısa olabilir. Ama yine de branch kullanmak genellikle daha güvenlidir.

Branch Açmak Sadece Git Komutu Değildir

Branch açmak teknik olarak basit bir komuttur:

git checkout -b feature/example

Ama işin değeri komutta değil, oluşturduğu çalışma disiplinindedir.

Branch bize şunu sağlar:

Düzen
İzolasyon
Takip edilebilirlik
Test edilebilirlik
Review kolaylığı
Geri dönüş güvenliği
Ana kodu koruma

Bu yüzden branch açmak yalnızca geliştiricinin kendi rahatlığı için değil, ürünün, ekibin ve kullanıcıların güvenliği için de önemlidir.

Sonuç

Branch açarız çünkü yazılım geliştirme çoğu zaman doğrusal ve kusursuz ilerlemez. Deneme yaparız, düzeltiriz, test ederiz, sadeleştiririz ve ancak hazır olduğunda ana koda taşırız.

Bu örnekte branch açmak doğru karardı çünkü geliştirme birden fazla ekranı, veri akışını, kullanıcı davranışını ve testi etkiliyordu. Branch sayesinde ana kod korunurken yeni özellik kontrollü şekilde geliştirildi, test edildi ve merge’e hazır hale getirildi.

Kısacası:

Branch, yarım işi saklamak için değil;
tamamlanmış işi güvenle teslim etmek için açılır.

Share this Post

Birlikte Harika Bir Sey Insa Edelim

Aklinizda bir proje mi var? Formu doldurun, size en kisa surede donelim.

Hizli geri donus
Ucretsiz proje danismanligi

Veya Bize Dogrudan Ulasin