Artık dallandırma ve birleştirmenin temellerini öğrendiğinize göre bunlarla ne yapabilirsiniz? Bu bölümde, bu hafif dallandırma ile mümkün olan bazı yaygın iş akışlarını ele alacağız, böylece bunları kendi geliştirme döngünüze dahil edip etmek istemediğinize karar verebilirsiniz.
Git, basit bir üçlü birleştirmeyi kullandığı için, bir daldan diğerine uzun bir süre boyunca birden fazla kez birleştirme yapmak genellikle kolaydır. Bu, her zaman açık olan ve geliştirme döngünüzün farklı aşamalarında kullanabileceğiniz birkaç dalınız olabileceği anlamına gelir; bunlardan bazılarını düzenli olarak diğerlerine birleştirebilirsiniz.
Birçok Git geliştiricisi, bu yaklaşımı benimseyen bir iş akışına sahiptir.
Örneğin, master
dallarında hatasız çalışan (muhtemelen yayımlanmış veya yayımlanacak) dengeli (stabil) kodu bulundurabilirler.
Bunun yanında üzerinde çalışmak veya düzgün çalıştığını test etmek amacıyla develop
veya next
adında başka bir paralel dalları daha vardır. Bunların her zaman dengeli olması gerekmez, ancak kararlı (hatasız çalışan) bir duruma geldiğinde master
dalına birleştirilebilir.
Bu dal, daha altta yer alan konu dallarını (önceki iss53
dalı gibi kısa ömürlü dalları) içeri çekmek için kullanılır; hazır olduklarında yani tüm testleri geçip hata vermediklerinde ana dala (master veya main) birleştirilir.
Aslında bahsettiğimiz şey, işlediğiniz katkı çizgisinde yukarı yönlü hareket eden işaretçilerdir. Dengeli dallar, katkı geçmişinizde daha aşağıda yer alırken, en güncel dallar geçmişin daha yukarısındadır.
Genellikle, bunları iş kuleleri (work silo) olarak düşünmek daha kolaydır, burada katkı grupları tamamen test edildiğinde daha dengeli bir yapıya eklenir.
Bu yaklaşımı farklı denge seviyelerinde sürdürebilirsiniz.
Bazı büyük projeler, henüz next
veya master
dallarına bütünleşmeye hazır olmayan birleşik dalları içeren bir proposed
veya pu
(proposed updates) dalına sahiptir.
Temel fikir, dallarınızın çeşitli denge düzeylerinde olmasıdır; daha kararlı bir düzeye ulaştıklarında, bir üstlerindeki dala birleştirilirler.
Tekrar belirtmek gerekirse, birden çok uzun ömürlü dala sahip olmak zorunlu değildir, ancak özellikle çok büyük veya karmaşık projelerle uğraşılıyorsa genellikle faydalı olur.
Ancak, tematik dallar (topic branch) herhangi bir boyuttaki projelerde faydalıdır. Bir tematik dal, yalnızca belirli bir özellik veya ilgili çalışma için oluşturduğunuz kısa ömürlü bir şubedir. Bu genellikle dalı oluşturmak ve birleştirmek çok maliyetli olduğu için bir sürüm kontrol sistemiyle daha önce muhtemelen yapmadığınız bir şeydir. Ancak Git’te bir günde birkaç kez dal oluşturmak, üzerinde çalışmak, birleştirmek ve silmek yaygındır.
Bunu, oluşturduğunuz iss53
ve hotfix
dalları ile bir önceki bölümde gördünüz.
Bu dallarda birkaç katkı işlediniz ve onları ana dalınıza birleştirdikten hemen sonra sildiniz.
Bu teknik, hızlı ve tam bir bağlam değişimi sağlar. Çünkü çalışmanız, tüm değişikliklerin o konuyla ilgili olduğu dallara ayrılmış durumda, böylece kod incelemesi ve benzeri durumlarda neler olduğunu görmek daha kolaydır.
Değişiklikleri orada dakikalarca, günlerce veya aylarca tutabilir ve hazır olduklarında (oluşturuldukları veya üzerinde çalışıldıkları sıraya bakılmaksızın) birleştirebilirsiniz.
Örnek olarak, master
dalı üzerinde çalışıyorsunuz, bir sorunu çözmek için iss91
dalını oluşturuyorsunuz, bir süre üzerinde çalıştıktan sonra aynı şeyi başka bir şekilde ele almak için iss91v2
adlı ikinci bir dal oluşturuyorsunuz, master
dalına geri dönüyorsunuz ve bir süre orada çalıştıktan sonra, belki de iyi bir fikir olup olmadığından emin olmadığınız bir iş üzerinde çalışmak için oradan da dumbidea
dalını açıyorsunuz.
Katkı geçmişiniz şuna benzer bir görünüme sahip olacak:
Şimdi, diyelim ki sorununuza en iyi çözümün iss91v2
olduğuna karar verdiniz; ve dumbidea
dalını iş arkadaşlarınıza gösterdiğinizde bunun aslında çok parlak bir fikir olduğu ortaya çıktı.
Orijinal iss91
dalını (C5
ve C6
katkılarını kaybederek) çöpe atabilir ve diğer iki dalı birleştirebilirsiniz.
O zaman geçmişiniz şöyle görünecek:
Git projeniz için çeşitli olası iş akışları hakkında daha fazla detaya ch05-distributed-git.asc bölümünde gireceğiz. Bu nedenle bir sonraki projenizde hangi dallandırma şemasını kullanacağınıza karar vermeden önce bahsi geçen bölümü okuduğunuzdan emin olun.
Bunları yaparken önemli olan, tüm bu dalların tamamen yerel olduğunu hatırlamaktır. Dallandırma ve birleştirme işlemleri yaparken, her şey yalnızca kendi Git repo dosyanızda gerçekleşir ve sunucu ile iletişim yoktur."