"Junior Android geliştiricilere tavsiyeler" yazı dizisinin 5. bölümünde Git kullanımı ve bu konuda dikkat ettiğim noktalardan bahsetmek istiyorum.

Günümüz yazılım dünyasında versiyon kontrol sistemi olarak Git kullanımı sanırım bir standart haline geldi. Ben de hem kişisel projelerimde hem de şu an aktif olarak çalıştığım Dolap: İkinci el moda" projesinde Git tercih etmekteyim. Bunun yanı sıra projenin host edilmesi için GitHub, GitLab ve Bitbucket gibi alternatifler mevcut ve bu saydıklarım için sanırım sektör standardı desem yanılmış olmam.

Git ve bununla ilişkili kavramlara tamamen yabancı olan arkadaşlar için aşağıda önceden yazmış olduğum “Yeni Başlayanlar için Git 101” yazımın linkini paylaşıyorum: Yeni Başlayanlar için Git 101

Yazımın devamında ise Git kullanımı sırasında dikkat edilmesi gereken noktalardan ve takip edilmesi gereken "best practice"ler nelerdir? onlardan bahsetmek istiyorum.

Branch temelinde çalışmaya özen gösterin!

Projenizi geliştirirken her zaman branch’ ler üzerinden çalışmayı kendinize bir zorunluluk haline getirin. Kişisel düşüncem isterseniz tek başınıza projeyi geliştiriyor olun, isterseniz de bir ekibin parçası olarak çalışıyor olun, fark etmeksizin her zaman branch’ ler üzerinden projenizi devam ettirin. Branch temelinde çalışmanın en büyük avantajı ise, projeniz de küçük ve büyük ölçekli bütün değişiklikleri kolayca devam ettirebiliyor olmanızdır.

“Başarılı Bir Git Branch Modeli Nasıl Oluşturulur?” başlıklı yazımı okuyarak ise, bu konuda daha ayrıntılı bilgiye sahip olabilirsiniz: Başarılı Bir Git Branch Modeli Nasıl Oluşturulur?

Sürekli olarak commit atın.

Uygulamada bir feature'ın yapılacak olduğunu düşünün. Bu feature için bir feature branch oluşturdunuz ve ilk commit’ i attınız. Daha sonra belli bir ilerleme daha gerçekleştirdiniz. Şimdi tekrar commit zamanı. Sürekli bu şekilde bir döngüde ilerleyerek sorunsuz bir şekilde feature branch’ inizi ilerletebilirsiniz.

Aksi durumda ise, sürekli olarak commit atmaz iseniz, branch üzerinde bir kontrole sahip olamayacaksınız. Kod üzerinde yapılan değişikliklerin kontrolü zorlayaşacak, dolayısı ile yapmış olduğunuz bu değişikleri aksi bir durumda geri almanız imkansız hale gelecektir.

Commit mesajlarının anlaşılabilir olması son derece önemli.

Commit mesajlarının içeriğinin nasıl şekillenmesi gerektiğiyle alakalı internet üzerinde onlarca makale bulabilirsiniz. Bu yazılarının içeriğinden bağımsız olarak asıl önemli olan nokta, attğınız commit mesajlarının yapmış olduğunuz kod değişimini net olarak anlatıyor olması gerektiğidir.

Sanırım takip edilebilecek en güzel yöntem commit mesajı içerisine kısa bir başlık veya task numarası ve commit içerisinde yer alan değişimlerinin özetini anlatan bir kaç cümle.

Pull Request olmadan proje geliştirmemek en önemli hedefimiz olmalı.



Teorik olarak bakıldığında bir projenin ilerlenmesi aşamasında Pull Request (PR) olmadan süreç devam etmemelidir. Tabi gerçek hayata döndüğümüzde bunu aktif olarak kullanabildiğimiz söylenemez.

Burada iki durum var. Birincisi kişisel olarak geliştirilen projeler, diğeri ise ekip halinde geliştirilen projeler. Kişisel olarak geliştirilen projelerde PR sisteminin kullanılmasının en önemli yanı merge zamanı geldiğinizde yazmış olduğunuz kodu bir bütün açıdan görerek, olası sorunları bulabilmeniz, kodlama stilinin bozulup bozulmadığını kontrol edebilmeniz, yorumların durumunu görebilmeniz vs. Ekip halinde geliştirilen bir proje de zaten PR sistemi olmadan ilerlenmemeli. Bu sayede projenin kod kalitesinin korunması sağlanabilir, aynı zaman da yazılan kodlar diğer geliştiriciler tarafından da yorumlandığı için farklı görüş açıları harmanlabilir, potansiyel bug’ lar daha kolay bulunabilir.

Base branch yapısının kurulması gerekmektedir.

Buradaki base branch yapısı projeden projeye, şirketten şirkete göre değişiklikler gösterebilir. Her ne kadar değişimler mevcut olsa da altında yatan mantık aynıdır.

Dolap: İkinci el moda uygulamasında prod ve master olarak isimlendirdiğimiz iki farklı base branch bulunmakta. Bazı yerlerde bunların isimleri master ve develop olarak değişim gösterebilmektedir. Prod branch'i Google play markette bulunan apk ile aynı özelliklere sahiptir. Bu branchin temel olarak özelliği, market güncellemesinin yayınlanacağı branch olmasıdır. Aynı zamanda marketteki uygulamamızda bir bug bulunduğunda ve bunun için hotfix güncellemesi yayınlanması gerekiyor ise, doğrudan prod branch’i üstünden bu süreç devam ettirilir. Bu sayede paralel olarak devam eden feature geliştirmelerinden güncellememiz etkilenmeyecektir. Master branch’ i ise geliştirmeler için oluşturulan feature branch’ lerin merge edildiği ve QA testlerinin yapıldığı branch olma özelliği taşımaktadır.

"Başarılı Bir Git Branch Modeli Nasıl Oluşturulur?" başlıklı yazımı okuyarak ise, bu konuda daha ayrıntılı bilgiye sahip olabilirsiniz.

MuratCanBatur