Küçük ekipler için Git iş akışı


11

Küçük bir ekipte uygulamak için git iş akışı üzerinde çalışıyorum. İş akışındaki ana fikirler:

  • Tüm ekip üyelerinin yazabileceği paylaşılan bir proje yöneticisi var
  • Tüm geliştirme sadece özellik dallarında yapılır
  • Özellik dalları, şube yazarı dışındaki bir ekip üyesi tarafından incelenen koddur
  • Özellik dalı sonunda paylaşılan ana sistemle birleştirilir ve döngü yeniden başlar

Makale, bu döngüdeki adımları ayrıntılı olarak açıklamaktadır:

https://github.com/janosgyerik/git-workflows-book/blob/small-team-workflow/chapter05.md

Bu mantıklı mı yoksa bir şey mi kaçırıyorum?

Yanıtlar:


16

Git akış dallanma modelini seviyorum . Ana dal çoğu zaman yalnız bırakılır, sadece sürümleri içerir. Geliştirme dalı her zaman kararlı olmalı ve özellik dalları kırılabilir.

Bunu, geliştirmeyi özellik dalınızla özellik dalınızı geliştirmeye birleştirerek sürekli entegrasyonla birleştirebilirsiniz. Tabii ki bir şeyi sadece bir şeylerin çalıştığından ve kırılmadığından eminseniz geliştirmeye birleştirmelisiniz.


Anladığım kadarıyla git akışı ve sürekli entegrasyon alternatif çalışma yollarıdır ve gerçekten birleştirilemez. Git akışında kod, yalnızca bir özellik tamamlandığında gelişmeye birleştirilir. Sürekli entegrasyonda, hemen yeni bir özellik sağlamasa bile, tüm kod günde en az bir kez paylaşılan bir şubeye birleştirilir.
bdsl

7

Sürekli Entegrasyon konusunu kaçırdığınızı düşünüyorum. Her geliştirme kurulumunun bir parçası olmalıdır.

Özellik dalları ile, sürekli bir şekilde entegre olmamanız, ancak yalnızca bir özellik tamamlandıktan sonra sorun yaşarsınız.

Dallanan özellik kısa ömürlü ise, bu kabul edilebilir, ancak kesinlikle dikkate alınması gereken bir şeydir.

Diğer bir alternatif, her özellik dalı için CI derlemelerini kurmaktır. Bu kesinlikle yardımcı olur, ancak entegrasyon değildir. Özellik A'da veya Özellik B'de görünmeyen, ancak Özellik A&B'yi entegre ettiğiniz anda ilk hatanızı bulduğunuzda bu belirgin hale gelir.

Üçüncü bir alternatif, bazı entegrasyon dallarında birleştirmeyi CI yapısının bir parçası haline getirmektir. Bu gerçek bir entegrasyon ve eğer iş biraz ayrılırsa aslında git ile oldukça iyi çalışır, ancak derleme sırasında birleştirme çakışmalarına neden olur ve başarısız derlemeler oluşur.


Ana dal, otomatik regresyon olmayan testlerde başarısız olmaları durumunda, özellik dalı birleştirmelerini reddetmek için bir CI ile bağlanabilir. Bahşiş için teşekkürler, sonuna bir "İpuçları" bölümü ekleyeceğim ve orada anlatacağım.
janos

1
Tabii, ama dediğim gibi, bu sürekli entegrasyon değil, iyi bir yetenek olabilir, ancak aynı değil
Jens Schauder

1
Özellik dallarının çok yararlı olduğunu düşünüyorum, çünkü kararlı olmalarına gerek yok. Bu, büyük bir taahhüt yerine sık sık taahhüt edebileceğiniz anlamına gelir.
Arjan

Bir çizelgede (CI sistemi) çalışan otomatik bir derleme işlemi kaçınılmazdır. Derleme sorunlarının hızlı bir şekilde bulunabilmesi ve düzeltilebilmesi için sık sık çalışması gerekir. Geliştirme ekipleri yapı hatalarına en yüksek önceliği vermelidir. Bu tür problemleri ilk ortaya çıktıklarında çözmek çok daha kolaydır.
Nathan Pilling

1
CI kullanan projelerimiz için (şu anda kullanamayacağımız birkaç eski projemiz var), HER ŞEYİ gerçek CI için ustalaşmayı taahhüt ediyoruz, eski projelerimiz için git akış dallanma modelini kullanıyoruz. Özellik dalları bana sorarsanız bir CI engelleyicidir, SÜREKLİ (yalnızca bittiğinde değil) entegrasyonunu zorlaştırırlar. Özellikler üzerinde çalışmaya devam ediyoruz ve son görev temel olarak açmaktır, ancak kod her zaman projede.
Elliot Blackburn

1

Gitflow veya Twgit'e ilham alabilirsiniz .

gitflow yaklaşımını şöyle özetliyor:

Git, Vincent Driessen'in dallanma modeli için üst düzey depo işlemleri sağlamak üzere genişletildi.

Twgit kendini şöyle anlatıyor:

Twgit, Git depolarındaki özellikleri, düzeltmeleri ve sürümleri yönetmek için ücretsiz ve açık kaynaklı bir yardımcı araçtır. Belgelerimizde açıklanan dallanma modelini benimsemek için basit, üst düzey komutlar sağlar. Desteklenen İşletim Sistemi: Debian / Ubuntu Linux, Mac OS X.

Her iki araç da github'dan temin edilebilir .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.