Özel bir Github deposundaki ortak çalışanlar depoyu çatallandırmalı mıdır?


15

Şu anda bir proje üzerinde çalışıyorum ve kaynak kodumuz Github'daki özel bir depoda, her birimiz ortak çalışan olarak var.

Belirsiz olduğumuz şey, çalışmalarımızın her birini nasıl ayıracağımızdır.

Yapmamız gerektiğini düşündüğüm şey:

  1. Her birimizin depoyu çatallamamız gerekiyor
  2. Kodumuzu zorlamaya hazır olduğumuzda, proje liderinin deposuna bir çekme talebi göndeririz, aynı zamanda bunu kod incelemesi yapmak için bir fırsat olarak kullanabilir

Özel depolar söz konusu olduğunda, çatallamanın kullanılması gereken şey bu mudur, yoksa durumu aşırı karmaşıklaştırıyor muyum?


1
Evet. Bunu burada önerdiğin gibi yap, sadece bir takım oluştur ve takımın repo'sunu "usta" repo yap. Proje lideri de dahil olmak üzere herkes PR yapar.
RubberDuck

Yanıtlar:


7

Repoyu geliştiricinin yerel makinesine klonlamak zaten bir çeşit çatal. Her geliştirici depoyu GitHub'a çatallarsa, bu yalnızca geçerli çalışma durumunu yayınlamaya yarar.

Bu, merkezi bir master repo olduğunda ve bu repoya doğrudan erişimle güvenilmeyen birçok katılımcı olduğunda uygun olabilir. Bu, herkesin katkıda bulunabileceği ve daha sonra bir grup çekirdek koruyucusu tarafından gözden geçirilip birleştirilebilen açık kaynaklı projeler için harika çalışıyor. Birden çok depo kullanmak, çekme isteği tabanlı bir iş akışını zorlar.

Küçük, güvenilir bir ekipte bu gerekli değildir. Farklı kişilerin birbirlerinin yoluna girmesini önlemek için Git Akışı gibi bir strateji izlenebilir: Her küçük özellik ayrı bir özellik dalında uygulanır. Özellik tamamlandığında, ana dalla birleştirilir. Çoğu takım bunu bir çekme isteği veya kod incelemesi ile birleştirir, ancak uygunsa bunu atlayacak kadar güvenilirdir. Ayrı depolar, bir geliştiricinin mevcut durumunu çatallı ancak takım tarafından görülebilir depolarında yayınlamasına yol açarken, tek bir ortak repoda değişikliklerini ayrı bir özellik dalına zorlarlardı. Master / trunk'taki tüm geliştirme işlemlerinin çoğu iş akışında önerilmez.

Aradaki fark, yalnızca erişim yönetimi ile ilgilidir ve uygulanan iş akışı ile ilgili değildir. Her iki kurulumda da çekme isteği tabanlı iş akışları yapabilirsiniz. Ham bir Git açısından bakıldığında, bir çatal ve bir dal arasında çok fazla fark yoktur - her iki yaklaşım da esasen projenin geçmişini paylaşır ve diğer dalları / çatalları etkilemeden taahhütlerin eklenmesine izin verir. Bu göz önüne alındığında, güvenilir, kapalı bir gruptayken tek bir repo paylaşmak çok daha iyi olur.


1
@Amon'un söylediklerini hızlı bir şekilde yankılamak için, her geliştiricinin ana bir repodan çatallanması gereken bir organizasyonda çalıştım, hepimizin sadece gereksiz ve beceriksiz bir ekstra adım olduğunu hissettim. Neden gerekli olduğunu hiç anlamadım, ama operasyon ekibimiz bunu tartışmayacaktı. Süreç şuydu: - - push -> çekme isteği -> bekle -> biraz daha bekle -> ops ekibinin IRC'de dikkatini çekmeye çalışmak bekleyin -> kod entegre -> tekrar.
DaveyDaveDave

1
Bu iş akışını gerçekten caydırıyorum. Her ikisi de doğrudan kanonik repoya iten iki geliştirici ile gerçekten kötü birleşme çatışmaları yaşadım. Bahsetmemek gerekirse, yine de başka birinin kodunuzu incelemesi en iyisidir. Çatalınız varsa çekme istekleri göndermek çok daha kolaydır ve bir adet kanonik proje repo var. Evet evet. Biliyorum, bu "dağıtılmamış". Her neyse. Çatal ve PR modeli tecrübelerime göre daha iyi çalışıyor.
RubberDuck

@RubberDuck bu iyi bir nokta, çekme taleplerinden sorumlu kişilerin kodu gözden geçirecek bir konumda olmamaları nedeniyle benim durumumun nadir olduğundan şüpheleniyorum. Gerrit daha etkili olabilir gibi kod inceleme için diğer özel araçlar öneriyorum, ama çatal çatal benzer şekilde iyi çalışması gerektiğini düşünüyoruz.
DaveyDaveDave

Sorun, özelliğin ne zaman master'a geçmeye hazır olduğunu kim belirler? Ayrıca şubelerle çalışmanın dağınık olduğunu da düşünüyorum; Bir repodaki 100'lü dallar ve çoğu birleştirilmemiş veya yarı işlenmiş, birleştirilmeye hazır olmasalar bile neden var olmalılar? Erişim yönetimi iş akışı hakkında% 100, bu cevap sadece yarı iyi.
Rudolf Olah

5

Bu işe yarayabilir ya da her katkının kendi dal (lar) ına sahip olduğu, ekip kabul ettiğinde usta ile birleştirildiği bir dallanma yöntemi kullanabilirsiniz.


Teşekkürler, daha fazla ayrıntı olduğu gibi diğer cevap ile gidecek, ama evet katılıyorum :)
JMK
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.