Git dallanma stratejisini benimseme
Azure Repos | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018-TFS 2015
Git gibi dağıtılmış sürüm denetimi sistemleri, kod paylaşmak ve yönetmek için sürüm denetimi kullanma esnekliği sağlar. Takımınız bu esneklikle tutarlı bir şekilde işbirliği yapma ve kod paylaşma ihtiyacı arasında bir denge bulmalı.
Takım üyeleri, başkalarıyla paylaşılan Git dalları aracılığıyla kod değişikliklerini yayımlar, paylaşır, gözden geçirer ve bu değişiklikleri yeniden yayımlar. Takımınız için bir dallama stratejisi benimseme. Daha iyi işbirliği yapmak ve sürüm denetimi yönetmek için daha az zaman harcayabilir ve kod geliştirmeye daha fazla zaman harcayabilirsiniz.
Aşağıdaki dallama stratejileri, Git'i Burada Microsoft'ta kullanma yollarımız temel almaktadır. Daha fazla bilgi için bkz. Microsoft'da Git'i kullanma.
Dal stratejinizi basit tutma
Dal stratejinizi basit tutma. Stratejinizi şu üç kavramdan oluşturma:
- Tüm yeni özellikler ve hata düzeltmeleri için özellik dallarını kullanın.
- Çekme isteklerini kullanarak özellik dallarını ana dalda birleştirin.
- Yüksek kaliteli, güncel bir ana dalı tutma.
Bu kavramları genişleten ve çelişenlerden kaçınan bir strateji, takımınız için tutarlı ve takipsi kolay bir sürüm denetimi iş akışına neden olur.
Çalışmanız için özellik dallarını kullanma
Özelliklerinizi geliştirin ve ana dalını temel alarak özellik dallarında hataları düzeltin. Bu dallar, konu dalları olarak da bilinir. Özellik dalları, devam eden işi ana dalda tamamlanan işlerden yalıtır. Git dalları oluşturmak ve bakımını yapmak için uygun maliyetlidir. Küçük düzeltmeler ve değişiklikler bile kendi özellik dallarına sahip olmalı.

Tüm değişiklikleriniz için özellik dalları oluşturmak, gözden geçirme geçmişini basit bir şekilde yapar. Dalda yapılan işlemelere bakın ve dalı birleştirilen çekme isteğine bakın.
Özellik dallarınızı kurala göre adlandırma
Dalda yapılan işi tanımlamak için özellik dallarınızı tutarlı bir adlandırma kuralı kullanın. Dal adına, dalı oluşturan kişi gibi diğer bilgileri de dahil edin.
Özellik dallarınızı adlandırmak için bazı öneriler:
- kullanıcılar/kullanıcı adı/açıklama
- users/username/workitem
- hata düzeltmesi/açıklama
- özellik/özellik-adı
- özellik/özellik-alanı/özellik-adı
- düzeltme/açıklama
Not
Dal adlandırma stratejisini zorunlu kılınan ilkeleri ayarlama hakkında bilgi için bkz. Dal klasörleri gerektirme.
Uzun süre çalışan dalları yönetmek için özellik bayraklarını kullanma
Kodda özellik bayraklarını kullanma hakkında daha fazla bilgi.
Çekme istekleriyle kodu gözden geçirme ve birleştirme
Çekme isteğinde yapılan gözden geçirme, kod kalitesini artırmak için kritik öneme sahip. Dalları yalnızca gözden geçirme sürecinizi geçen çekme istekleri aracılığıyla birleştirin. Dalları çekme isteği olmadan ana dala birleştirmeden kaçının.
Çekme isteklerinde incelemelerin tamamlanması zaman alır. Takımınız çekme isteği oluşturucularından ve gözden geçirenlerden beklenenleri kabul ediyor olmalı. Fikirlerinizi takımınız arasında paylaşmak ve kod tabanınız hakkında bilgi yaymak için gözden geçiren sorumluluklarını dağıtabilirsiniz.
Başarılı çekme istekleri için bazı öneriler:
- İki gözden geçiren, araştırmalarına göre en uygun sayıdır.
- Takımınız zaten bir kod gözden geçirme işlemine sahipse, çekme isteklerini zaten yapmakta olduğunuz işleme getirin.
- Aynı gözden geçirenleri çok sayıda çekme isteğine atamaya özenin. Takım genelinde gözden geçiren sorumlulukları paylaşılırsa çekme istekleri daha iyi çalışır.
- Gözden geçirenleri değişikliklerinizi hızla hızlandırmak için açıklamaya yeterli ayrıntıyı girin.
- Çekme isteğinizi içeren, aşamalı bir ortamda çalışan değişikliklerinizin derleme veya bağlantılı sürümünü dahil edin. Diğer değişiklikler kolayca test edilebilir.
Yüksek kaliteli, güncel bir ana dalı tutma
Ana dalınıza kodun testleri geçmesi, derlemenin temiz olması ve her zaman güncel olması gerekir. Ana dalın, takımınız tarafından oluşturulan özellik dallarının bilinen iyi bir kod sürümünden başlaması için bu özelliklere ihtiyacı vardır.
Ana dalınız için şu şekilde bir dal ilkesi ayarlayın:
- Kodu birleştirmek için çekme isteği gerektirir. Bu yaklaşım, ana dala doğrudan itmeleri önler ve önerilen değişikliklerin tartışmasını sağlar.
- Çekme isteği oluşturulduğunda gözden geçirenleri otomatik olarak ekler. Eklenen ekip üyeleri kodu gözden geçirecek ve çekme isteğinde yapılan değişikliklerle ilgili yorumda bulundu.
- Çekme isteğini tamamlamak için başarılı bir derleme gerektirir. Ana dala birleştirilen kodun temiz bir şekilde derlemesi gerekir.
İpucu
Çekme isteklerinizin derleme işlem hattının hızlı bir şekilde tamamlanması gerekir, bu nedenle gözden geçirme sürecini engellemez.
Yayın yönetme
Kodunuzun bir sürümüne yapılan değişiklikleri koordine etmek ve dengelemek için yayın dallarını kullanın. Bu dal uzun sürelidir ve özellik dallarının aksine çekme isteğinde ana dala geri birleştirilmez. Gereken sayıda yayın dalı oluşturun. Her etkin yayın dalın desteklemesi gereken kodun başka bir sürümünü temsil ettiğini unutmayın. Belirli bir sürümü desteklemeyi durdurmaya hazır olduğunda yayın dallarını kilitler.
Yayın dallarını kullanma
Yayına veya sprint sonu gibi başka bir kilometre taşına yaklaşarak ana daldan bir yayın dalı oluşturun. Bu dala, sürümle (örneğin sürüm/20)açık bir ad girin.
Yayın dallarından hataları düzeltmek için dallar oluşturun ve bunları bir çekme isteğinde yayın dalı ile yeniden birleştirin.

Değişiklikleri ana dala geri bağlantı noktasıyla geri takın
Düzeltmelerin hem yayın dalın hem de ana dalın içinde olduğundan emin olun. Yaklaşımlardan biri yayın dalı üzerinde düzeltmeler yapmak ve ardından kodunda regresyonu önlemek için değişiklikleri ana dalınıza getirmektir. Bir diğer yaklaşım da (ve Azure DevOps ekibi tarafından çalışan yaklaşım), ana hat üzerinde her zaman değişiklik yapmak ve sonra da bu değişiklikleri yayın dalını bağlantı noktasına yapmaktır. Yayın geliştirme stratejimiz hakkında daha fazla Flow okuyabilirsiniz.
Bu konu başlığında, yayın dalda değişiklik yapma ve bunları mainline'a porting konularına yer veacağız. Ana dala hangi işlemelerin geri taşınabilir olduğu üzerinde tam denetime sahip olmak için birleştirme yerine tek tek seçmeyi kullanın. Özellik dalın ana dala birleştirilmesi, ana dalda istemeyebilirsiniz yayına özgü değişiklikleri getirir.
Ana dalı, yayın dalda yapılan bir değişiklikle şu adımlarla güncelleştirin:
- Değişiklikleri bağlantı noktası oluşturmak için ana daldan yeni bir özellik dalı oluşturun.
- Yayın daldan yeni özellik dalınıza yapılan değişiklikleri tek tek seçme.
- Özellik dalı, ikinci bir çekme isteğinde ana dala geri birleştirin.

Bu yayın dalı iş akışı temel iş akışının sütunlarını olduğu gibi tutar: özellik dalları, çekme istekleri ve her zaman kodun en son sürümüne sahip güçlü bir ana dal.
Sürümler için etiketleri neden kullanasınız?
Diğer dal oluşturma iş akışları belirli bir işlemeyi yayın olarak işaretlemek için Git etiketlerini kullanır. Etiketler, geçmişinizin önemli noktalarını işaretlemek için kullanışlıdır. Etiketler, iş akışınıza sürümler için dallar kullanıyorsanız gerekli olmayan ek adımlar ekler.
Etiketler, işlemelerinize ayrı olarak korunur ve bu etiketlerden ayrı olarak teslim edilir. Ekip üyeleri bir işlemeyi etiketlemeyi kolayca kaçırabilir ve ardından etiketi düzeltmek için geçmişle ilgili geri dönmeleri gerekir. Ayrıca etiketi itme adımını da unutabilirsiniz. Sonraki geliştirici sürümü desteklerken kodun eski bir sürümünden çalışıyor.
Yayın dalı stratejisi, temel özellik dalı iş akışını yayınlarla başa çıkacak şekilde genişletmektedir. Takımınız, bağlantı noktası değişikliklerini tek tek seçme dışında herhangi bir yeni sürüm denetimi işlemini benimsemek zorunda değil.
Dağıtımları yönetme
Kodunuzun birden çok dağıtımını birden çok sürümü işlemeyle aynı şekilde işebilirsiniz. deploy/performance-testgibi net bir adlandırma kuralı oluşturun ve ortam dallarına yayın dalları gibi davranın. Takımınız dağıtım dallarını ana dalınıza gelen kodla güncelleştirme işlemini kabul eder. Dağıtım dalda ana dala kadar olan hata düzeltmelerini tek tek seçme. Bir yayın daldan değişiklikleri taşınabilirlik ile aynı adımları kullanın.
Sürekli dağıtım biçimi kullanıyorsanız bu önerinin bir istisnası vardır. Sürekli Azure Pipelines çalışırken, derlemeleri ana daldan dağıtım hedeflerinize yükseltin.