Yakın zamanda GitLab kullanmaya başladık.
Şu anda "merkezi" bir iş akışı kullanıyor.
Github akışına geçmeyi düşünüyoruz ama emin olmak istiyorum.
Git-flow ile github-flow'un artıları ve eksileri nelerdir?
Yakın zamanda GitLab kullanmaya başladık.
Şu anda "merkezi" bir iş akışı kullanıyor.
Github akışına geçmeyi düşünüyoruz ama emin olmak istiyorum.
Git-flow ile github-flow'un artıları ve eksileri nelerdir?
Yanıtlar:
GitMinutes 17. bölümde, Nicholas Zakas'ın " Bir şirketin içindeki GitHub iş akışları " hakkındaki makalesinde tartışıldığı gibi :
Git-akışı , Vincent Driessen tarafından oluşturulan ve bu akışı yönetmek için bazı Git uzantılarının eşlik ettiği Git'teki değişiklikleri yönetme işlemidir .
Git-akış yatan temel düşünce her zaman farklı bir amaç için her biri birkaç ayrı şube sahip olmaktır:master
,develop
,feature
,release
, vehotfix
.
Özellik veya hata geliştirme süreci, nihayet yayınlanmadan önce bir daldan diğerine akar.Katılımcılardan bazıları
git-flow
genel olarak kullandıklarını belirtmişlerdir .
Bazıları onunla başladıgit-flow
ve ondan uzaklaştı.Uzaklaşmanın birincil nedeni,
git-flow
sürecin sürekli (veya neredeyse sürekli) bir dağıtım modelinde ele alınmasının zor olmasıdır.
Genel fikirgit-flow
, sürümlerin birkaç haftada bir yapıldığı daha geleneksel sürüm modelindeki ürünler için iyi çalıştığının, ancak günde bir veya daha fazla yayın yaptığınızda bu sürecin önemli ölçüde bozulduğudur .
Kısacası:
Mümkün olduğunca basit bir modelle başlayın (GitHub akışının eğiliminde olduğu gibi) ve gerekirse daha karmaşık bir modele doğru ilerleyin.
GitHub-Flow'a dayalı basit bir iş akışının ilginç bir örneğini şu adreste görebilirsiniz:
" Basit bir git dallanma modeli ", ana unsurları şunlardır:
master
her zaman konuşlandırılabilir olmalıdır.- özellik dalları aracılığıyla yapılan tüm değişiklikler (çekme isteği + birleştirme)
- çatışmaları önlemek / çözmek için yeniden ödeme; Birleştirmek
master
Daha eksiksiz ve sağlam bir iş akışı için gitworkflow'a (tek kelime) bakın .
Tüm modeller yetersiz olduğundan herkesin takip etmesi gereken sihirli bir iş akışı yoktur. Bunu söyledikten sonra aşağıdaki noktalara göre yazılımınız için uygun modeli seçebilirsiniz;
Üretimde birden çok sürüm - Git-flow kullanın
Kodunuzun üretimde birden çok sürümü varsa (yani İşletim Sistemleri, Ofis Paketleri, Özel uygulamalar, vb. Tipik yazılım ürünleri) git-flow'u kullanabilirsiniz. Bunun ana nedeni, bir sonraki sürümü geliştirirken üretimde önceki sürümleri sürekli olarak desteklemeniz gerekmesidir.
Üretim basit yazılımında tek sürüm - Github akışını kullanın
Kodunuzun her zaman üretimde yalnızca bir sürümü varsa (ör. Web siteleri, web hizmetleri, vb.) Github-flow'u kullanabilirsiniz. Bunun ana nedeni, geliştirici için karmaşık şeyler yapmanıza gerek olmamasıdır. Geliştirici bir özelliği bitirdiğinde veya bir hata düzeltmesini tamamladığında, hemen üretim sürümüne yükseltilir.
Üretimde tek sürüm ancak çok karmaşık yazılım - Gitlab-flow kullanın
Facebook ve Gmail gibi büyük yazılımlar, üretime geçmeden önce, şubeniz ile ana şubeniz arasında CI / CD> araçlarının çalışabileceği dağıtım dallarını tanıtmanız gerekebilir . Fikir, milyonlarca insan tarafından kullanıldığından bu yana üretim versiyonuna daha fazla koruma getirmektir.
Git-flow modelini bir yıldan fazla bir süredir kullanıyorum ve sorun değil.
Ancak bu gerçekten uygulamanızın nasıl geliştirilip dağıtılacağına bağlıdır.
Yavaş geliştirme / dağıtım akışına sahip bir uygulamanız olduğunda iyi çalışır.
Ancak örneğin GitHub gibi hızlı bir geliştirme / dağıtım akışına sahip bir uygulamamız var, her gün ve bazen günde birkaç kez dağıtıyoruz, bu durumda git-flow bence her şeyi yavaşlatma eğilimindedir ve ben GitHub kullanıyorum akar.
Dikkate alınması gereken diğer bir şey de git-flow standart git değildir, bu yüzden yapabilirsin ve yapabilirsin dediğimde, gerçekten demek istediğim, bilmeyen geliştiriciler bulacaksın ve sonra öğrenme eğrisi var. işleri berbat etme şansı. Ayrıca yukarıda belirtildiği gibi, birisi git-flow kullanımını daha kolay hale getirmek için bir dizi komut dosyası geliştirdi, böylece tüm komutları hatırlamanıza gerek kalmaz, komutlarla size yardımcı olur, ancak asıl akışı hatırlamak sizin işinizdir , Bir geliştirici bunun bir düzeltme mi yoksa özellik mi olduğunu bilmediğinde veya daha da kötüsü akışı hatırlayamadığında ve işleri doldurduğunda birden çok kez karşılaştım.
Mac ve Windows SourceTree için git- flow'u destekleyen en az bir GUI vardır .
Bu günlerde, basitliği ve yönetimi kolay olması nedeniyle GitHub akışına daha çok eğiliyorum. Ayrıca, "sık sık erken dağıtma" nedeniyle ...
Bu yardımcı olur umarım
git flow release...
uygulamayı dağıtmak için github eylemleriyle birlikte kullanmaktır. Orijinal cevabımda, günde birkaç kez yayınladığımızdan bahsetmiştim, bu git-flow kullanırken sorunlara neden oldu. Git-flow'un bu projede iyi çalışacağını düşünmemin nedeni, git-flow'u kullanmanın en büyük satış noktalarından biri olan önceden tanımlanmış bir yayın döngüsüne sahip olmamızdır.