Bilmek istediğin her şeye ulaş

Github'daki fork ve branch nedir?

Öncelikle bir VCS olan git'le, git servisi veren github'ı birbirinden iyi ayırmak lazım.

Fork, github'da ki herhangi bir projeyi kendi github kullanıcı adınız altında çoğaltmaya yarar. Devamında bu projenin kaynak kodları üzerinde çalışma yapabilir, yaptığınız değişiklikleri son adımda proje yöneticisine Pull Request olarak gönderebilirsiniz.

Branch ise basitçe dallardır, bu sayede üzerinde çalıştığınız kaynak kodun farklı (versiyon demek istemiyorum) türlerine sahip olabilirsiniz.

Örnek vermek gerekirse, her git deposu ön tanımlı olarak master branch'ı ile gelir. Eğer isterseniz geliştirme adlı ekstra bir branch açabilir, kod üzerinde değişiklikleri burada yapabilir ve son olarak stabil olduğundan emin olduğunuz değişiklikleri master branch'e aktarabilirsiniz.

Branch kavramını içeren birçok VCS'de kullanılabilecek olsada github için oldukça tavsiye edilen bir branch modeli hakkında daha fazla bilgiyi (nvie.com/posts/a-successful-git-branching-model/) adresinde bulabilirsiniz.

Github

Biraz detaylandırmak gerekirse, bu modelde stabil ve yayınlanmış kod sürümleri master branch'ta tutulmakta ve taglanmaktadır. Aynı zamanda geliştirilen kodlar develop branch'ında tutulmakta ve yazılıma yeni eklenen özellikler önce feature branch'larında takip edilmekte ve develop'a aktarılmaktadır.

Yazılımın yeni bir sürümü yayınlanacağı zaman, develop branch'da ki kodun son hali, release-1.x.y.z gibi bir isme sahip branch'lara aktarılmakta, sürüm yayınlanmaya karar verilidiğinde, master branch'a taglanarak aktarılmaktır.

İlgi çekici diğer bir nokta ise hotfix branch'larıdır.

Özetlemek gerekirse bu modelin sunduğu avantaja basit bir örnek verelim;
bu model sayesinde bir yandan yazılımınıza yeni özellikler eklerken, diğer taraftan gelecek sürümün hazırlığını yapabilir ve hatta daha önce yayınladığınız bir sürüm için hotfix uygulayıp tekrar yayınlayabilirsiniz.

Yazılım geliştirme oldukça detaylı bir süreçtir ve özellikle hata düzeltme safhası oldukça zaman almaktadır. Özellikle onlarca yazılımcının üzerinde çalıştığı devasa projelerde, koda eklenen yeni bir özellik, basit bir değişiklik yahut hata düzeltmesi, kod içerisinde ki diğer kısımların çalışmasını engelleyebileceğinden, bu süreci en kolay ve acısız şekilde branch'lar ile yönetebiliriz.
  • Paylaş