Git kullanırken, aktif geliştirme için ana dalı kullanmak tavsiye edilir mi?


32

Öncelikle, bazı geçmişler, tüm proje ekiplerimizin git'i kullanmaya geçirme sürecini sürdürüyoruz ve belirli dalların sürekli entegrasyon için izlenebilmesi için havuzların nasıl düzenlenmesi gerektiğine dair kılavuz ilkeleri belirliyoruz. Test sunucularına otomatik dağıtım Şu anda geliştirilmekte olan iki model var:

  1. En kararlı kodu, ana kanama için bir geliştirme kolunu ve QA testine hazır kod için bir entegrasyon kolunu temsil eden ana dal ile başarılı dallanma konusundaki nvie.com makalesinden ağır şekilde etkilenmiştir .

  2. Ana dalın, kanama kenarı geliştirme kodunu, QA testi için hazır kod için bir entegrasyon dalını ve dağıtım için hazır olan kararlı kod için bir üretim dalını temsil ettiği alternatif bir model.

Bu noktada, ana dalın neyi temsil ettiği ile ilgili kısmen anlamsal bir meseledir, ancak ana dalda aktif gelişme yapmak aslında iyi bir uygulama mıdır yoksa gerçekten o kadar alakalı değil mi?


1
Scott Chacon'un GitHub'u geliştirmek için kullandığı worfklow'u
seviyorum

1
Açıklandığı gibi, bana göre anlamsız bir sorun gibi görünüyor - herhangi bir kuruluş kendi süreçlerini geliştirecek ve bazı açılardan iş akışınızı yansıtması için gereken isimlerle ilgilenecek. Genel olarak, anahtar, bir yerde "HEAD'in kaynak kodu her zaman üretime hazır bir durumu yansıtır" şeklinde bir şey tanımladığınız görülüyor. Ne demek istediğinizi daha az önemli ama hem git-flow hem de GitHub iş akışı bu ayrılığa ve üretime hazır "şey" e bastığınızda kontrol etmeye odaklanıyor
Murph

@Murph - Doğru, ancak bunların bir kısmını sıfırdan yaptığımızdan, ortak sözleşmelere uymanın az çok en iyisinin daha iyi olacağını düşündüm, bu nedenle işe alınan yeni geliştiricilerin alışılmadık içsel uygulamalar nedeniyle dik bir öğrenme eğrisi olmaması.
rjzii

Sonra kendi sorunuzu cevapladınız (-: Soruyu eğrinin çok
üstünde

Yanıtlar:


33

masterŞubenin tek gerçek tanımlayıcı özelliği, bazı işlemler için varsayılan değer olmasıdır. Ayrıca, şube adlarının yalnızca belirli bir depoda anlamı vardır. Benim masteradresinden Müşteri işaret olabilir developmentörneğin. Ayrıca, bir masterdal bile gerekli değildir, bu yüzden hangi dalın olması gerektiği konusunda herhangi bir karışıklık varsa, tavsiyem genellikle onu tamamen dışarıda bırakmaktır.

Ancak, benim görüşüme göre, bunu düşünmenin en iyi yolu itmek için varsayılan olarak. Geliştiricilerinizin okuduğu çoğu çevrimiçi öğretici bunu varsayacaktır. Bu nedenle, masterhangi dalın en çok itildiği ne olursa olsun çok mantıklıdır . Bazı insanlar, en katı inceleme dışında, geliştiricilere dokunulmaz olan el değmemiş kopya olarak düşünürler, ancak bu şekilde kullanmak, git gittiğiniz faydalı varsayılanların çoğunu kaldırır. Böyle bir bozulmamış dalın olmasını istersen, sadece bazılarının yazabileceği tamamen ayrı bir depoya koyardım.


7
+1. “Üretime hazır” kodu önemli kod olduğundan, aynı zamanda bu önemi vurgulayan bir adla dalında yaşamalıdır. Varsayılan dal adı olarak "master" kesinlikle bu isteği yerine getirmez, çünkü herhangi bir niyet için ne olursa olsun her depoda kullanılır.
Bananeweizen

4
+1. Bu gerçek hayattaki cevap. Noktayı vurgulamak için: takımınızdaki hiç kimse "master" dalını tanımlamamış, git sistemi bunu yapmıştır. Önemli bir şey için, ekibinizde birinin tanımladığı şubelere bağlı kalın.
Travis Wilson,

1
Tamamen katılıyorum. Git akış modelini ( nvie.com/posts/a-successful-git-branching-model ) çok sevsem de , beni rahatsız eden tek şey, ustanın kesinlikle karşı sezgisel olan sürümler için ayrıldığıdır.
Bachi

12

Hayır, QA'ya gitmeden önce başlangıçta bile tavsiye edilmez. En iyi uygulama olarak, gelişim kalıbı baştan sona tutarlı olmalıdır. Ana şubeniz boş başlamalı, geliştirme şubenizi dallandırmalı ve dosya eklemeye başlamalı, entegrasyon şubenize birleşmeli ve ardından master'ınıza eklemelisiniz.

Gelişme sırasında hiç kimse ana dalın inşa etmemesini önemsemese de, başlarında kötü alışkanlıklara neden olur. Master her zaman inşa etmeli ve ana özellik sürümleri için, ana yapıların arşivlenmiş dallarını arşivlemeniz kötü bir fikir olmazdı, böylece kararlı sürüm noktalarının gerektiğinde geri getirilebilmesi sağlandı.


3
Etiketler aracılığıyla sürüm takibi yapmak daha iyi değil mi?
Adonis K. Kakoulidis

1
@AdonisK .: Sorunuzun alaka düzeyini göremiyorum.
Joel Etherton
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.