Branch sözünü türkçeye çevirecek olursak dal, kol gibi çevirebiliriz. Genelde Türkçe karşılığı olarak dal kelimesi kullanılır. Hatta arama motorlarında git branch veya svn branch diye arama yaparsanız ve görsellere bakarsanız da ağac dallarına benzer yapılar göreceksiniz. Versiyon kontrol sistemlerinde de aslında mantık aynıdır. Ortada dalların birleştiği projenin versiyonları iken dallar da projeyi geliştirdiğiniz ve en son projenize eklenilen özelliklerdir. Yani branchleri yani dalları projenizde yeni eklentileri yaptığınız bir yer olarak da görebilirsiniz.
Günümüz dünyasında bir projenin üzerinde binlerce kişi bile çalışabilir. Ama Türkiye'de genelde ekipler daha küçüktür. Tabi ki bu projenin de boyutu ile alakalı bir durumdur. Ama sonuç olarak kaç kişiyle birlikte çalışıyor olduğunuz çok bir önemi yok. Projede 2 kişi bile çalışıyorsanız projenizin geliştirme sürecinde versiyon kontrol sistemlerinden birini kullanıyorsanız branchlere ihtiyaç duyacaksınız. Hatta versiyon kontrol sistemlerine yeni başladıysanız ilk başta farketmeseniz de bir süre geçtikten sonra projelerin sağlıklı geliştirme sürecinde branchlarin önemini daha iyi anlayacaksınız. İsterseniz branch konusunu daha iyi anlata bilmek için örnek üzerinden tipik bir iş senaryosu ile devam edelim.
Konuyu anlatabilmek açısından Ahmet ve Mehmet adlı iki yazılımcının aynı projede çalıştığını hayal edin. Projemiz de doküman yönetim sistemi olsun. Ahmet ve Mehmet proje geliştirme sürecinde yapacaklarına sabahki toplantıda karar vererek günlük işlerini yapıyorlar. Aynı zamanda bu süreçte haftalık ve aylık toplantılar yapıyorlar. Proje geliştirme sürecinde yönetim onlardan aylık bir sürüm çıkarmasını bekliyor. Peki Ahmet ve Mehmet aynı proje üzerinde çalışırken kodlarını bir araya nasıl getiriyor? Aslında versiyon kontrol sistemlerinin bir görevi de birden çok yazılımcının aynı projede sorunsuzca çalışmasını sağlamaktır. Bunu sağlamak için de branchleri kullanıyor dersek yanılmış olmayız. Örneğimize devam ederek günlük yapılacak iş için Ahmetin projeye word desteği, Mehmetin ise pdf desteği ekleyeceğini varsayalım. İkisi de projede dün kaldıkları yerden başlıyorlar. Ahmet word desteği branchinde, Mehmet ise pdf deteği branchinde çalışıyor. Ahmet ve Mehmet işlerini bitirdikten sonra sırayla yaptıkları işleri birleştiriyorlar. Ki buna da versiyon kontrol sistemlerinde merge işlemi deniyor. Yani iki ayrı çalışma kopyasını birleştirme işlemi merge etme işlemidir. Merge işleminden sonra Ahmet ve Mehmet bir araya gelerek çakışma olup olmadığını kontrol ediyorlar. Eğer herhangi bir yerde çakışma varsa bunları ortak bir yerde çözerek yani başladıkları ve yarın için başlangıç olacak yerde çözüyorlar. Bu işlemden sonra yarın için başllangıç noktası hazır oluyor. Versiyon çıkarmak gerektiğinde ise çalışma brachini master branch'e eşitleyerek versiyon üretmiş oluyor.
Aslında branchlerle çalışmak için temel konulardan bir tanesi de merge işlemidir. Yukarıdaki örneklerde de kısaca bahsettiğim gibi merge işlemi branchlerle çalışırken olmazsa olmaz konulardandır. Çünkü dalların belirli noktalarda birleşmesi ve projenin dağılmaması için de önemli konulardan bir tanesidir. Merge işlemi branch oluşturmaktan daha zahmetli, ayrıntılı ve tecrübe gerektiren bir konudur. Bu yüzden genelde proje lideri tarafından yapılması tavsiye edilir. Merge işlemleri için daha sonra ayrıntılı bir makale daha yazacağım. Çünkü bu konuyu daha iyi anlamak sizin de çalışmanızı olumlu yönde etkileyecektir.
Konuyu çok uzatmamak açısından makalemi burada sonlandırmak istiyorum. Anlattığım konuların ve verdiğim örneklerin banchlari anlamanız için yeterli olduğunu düşünüyorum. Yine de söylemem gerekir ki branchler konusunu hiç bilmeyenler için ilk başta anlamak zor olabilir ama makalede okuduklarınız en azından sizin için kulak aşinalığı olacaktır ve düşünüyorum ki en azından branchlerin ne olduğunu, ne zaman kullanıldığını, proje ekibi içinde çalışma zamanı hangi rolleri üstlendiğini anlatabilmişimdir. Tabi ki proje ekibi içinde çalışma arkadaşlarınız da iyi olduğu sürece branchlerle çalışmak çok eğlenceli olacaktır.
Umarım yazım sizin için faydalı olmuştur. Son olarak konuyu anlamadıysanız ve konuyla alakalı sorularınız varsa bana yazabilirsiniz. En kısa sürede yanıtlamaya çalışacağım.
Yorumlar
Yorum Gönder