Mobillium Git Guidelines

Alihan Aktay
Mobillium
Published in
4 min readOct 19, 2021

Git hepimizin bildiği gibi bir versiyon kontrol sistemi. Mobillium’da Git’in legacy iş akışlarından (workflow) olan Gitflow’a birkaç ekleme yaparak kullanıyoruz. Bu makalede Mobillium’da kullandığımız Git iş akışından bahsedeceğiz.

Master & Develop Branchleri

İş akışımızda iki adet ana branchimiz oluyor. Bunlar, master ve develop branch’leri. Master branch’i kodumuzun en son yayınlanmış halini, develop branch’i ise kodumuzun en son halini içeriyor. Bu iki branch de direkt olarak push atmaya korumalı branchler.

Feature & Epic Branchleri

Develop branch’inden çıktığımız ve yeni özelliklerimizi geliştirdiğimiz iki adet branch bulunuyor. Bunlar, feature ve epic branchleri.

Geliştireceğimiz özellik bir epic’e bağlı olmadığında bu özelliği develop’tan çıktığımız bir feature branch’inde geliştiriyoruz. Bu branch’i oluştururken branch ismini klasörleme için feature/ olarak başlatıyoruz ve devamında task kodunu ekliyoruz, task kodu sonrası da kısa bir task ismi giriyoruz.(ör: feature/MBL-2234-kısa-task-ismi) Özelliğimizin geliştirmesi tamamlandığında pull request açarak bu branch’i tekrar develop branch’ine merge ediyoruz.

Geliştireceğimiz özellik bir epic’e bağlı ise önce develop’tan bir epic branch’i oluşturuyoruz. Epic branch’i de aynı develop ve master gibi push atmaya korumalı bir branch. Bu branch’i oluştururken branch ismini klasörleme için epic/ olarak başlatıyoruz ve devamında epic ismini giriyoruz.(ör: epic/checkout). Epic branch’ini oluşturduktan sonra bu epic’e bağlı bütün özellikleri, bu branch’ten oluşturduğumuz feature branch’lerinde geliştiriyoruz. Buradaki isimlendirme kuralı normal bir feature branch’inden farksız, sadece geliştirdiğimiz tüm feature’ları develop yerine pull request açarak epic branch’ine merge ediyoruz.

Fark edeceğiniz gibi epic branch’i Gitflow iş akışında aslında olmayan bir branch. Bu branch’i kendi iş akışımıza ekleme nedenimiz, büyük özellikleri geliştirirken bunları nispeten küçük tasklarda geliştirip pull requestlerin boyutunu düşürüp daha kolay review edilebilmelerini sağlamak.

Release & Bugfix Branchleri

Develop branch’inden çıktığımız üçüncü ve son branch, release branch’leri. Tüm geliştirmelerimizi tamamladıktan sonra regresyon testlerine hazır versiyonumuzu develop branch’inden release branch’i olarak oluşturuyoruz. Bu branch’i oluştururken yine ismini klasörleme için release/ olarak başlatıyoruz ve devamında belirlediğimiz sürüm numarasını veriyoruz. (ör: release/1.18.0) Burada önemli olan release branch’i oluştuktan sonra bu branch üzerinde hiçbir şekilde bir feature geliştirme yapmıyoruz; sadece son testlerde ortaya çıkabilecek bugları düzeltiyoruz.

Bu bugları release branch’lerinden çıktığımız bugfix branch’lerinde tamamlıyoruz. Bugfix branch’i de klasik Gitflow akışında olmayan bir branch türü. Bugfix branch’ini oluştururken ismini klasörleme için bugfix/ olarak başlatıyoruz devamında varsa subtask kodu ve kısa task ismiyle devam ettiriyoruz.(ör: bugfix/MLB-234-login-button-color-fix). Branch üzerinde yaptığımız fix tamamlandığında bir pull request açarak bu branch’i release branch’ine merge ediyoruz.

Hazırladığımız versiyon yayınlandığında release branch’ini hem master branch’ine hem de develop branch’ine merge ederek iki ana branch’in de kodumuzun son halinde olmasını sağlıyoruz.

Hotfix Branchleri

Hotfix branch’leri Gitflow iş akışında da bulunan branch’lerden ve bu iş akışımızda master’dan çıktığımız tek branch. Eğer yayınladığımız versiyonda bir hata çıkarsa ve bu hatayı mevcut ürün geliştirme programımızdan bağımsız olarak fixleyip sadece bu fixi içeren bir sürüm çıkmamız gerekiyorsa master branch’inde bir hotfix branch’i çıkıyoruz. Hotfix branch’ini oluştururken ismini klasörleme için hotfix/ olarak başlatıyoruz ve devamında çıkaracağımız sürümün numarasını veriyoruz. (ör: hotfix/1.18.1)

Hazırladığımız fixi içeren sürüm yayınlandıktan sonra hotfix branch’ini hem master branch’ine hem de develop branch’ine merge ederek iki ana branch’in de kodumuzun son halinde olmasını sağlıyoruz.

Özet olarak iki adet ana branch bulunuyor; bunlar master ve develop. Yeni özelliklerimiz eğer özellik bir epic’e bağlı değilse develop’tan çıkmış feature branch’lerinde, eğer bir epic’e bağlı ise develop’tan çıkmış epic branch’lerinden çıkmış feature branch’lerinde geliştiriyoruz. Release branch’lerini master branch’inden çıkıp hazır sürümlerimizi bu branch’lerden çıkıyoruz. Hazır sürümlerimizin testleri sırasında bir hata çıkarsa release branch’lerinden çıktığımız bugfix branch’lerinde bu hataları düzeltiyoruz. Eğer yayındaki uygulamalarımızda bir sorun varsa, bu sorunu master branch’inden çıktığımız hotfix branch’lerinde düzeltiyoruz.

Genel hatlarıyla Mobillium’da uyguladığımız Git iş akışı bu şekilde gerçekleşiyor.

Bir sonraki yazımızda görüşmek üzere…

--

--