Birleştirme yerine çekme isteklerini neden kullanmalıyım?


17

Bir dalı yalnızca bir şube olmadan master'a birleştirmek yerine çekme isteklerini kullanmanın avantajı nedir? Özellikle tüm geliştiricilerin ustaya tam erişime sahip olduğu bir ekipte.


1
Çekme istekleri, proje yöneticisinin şubenin master ile birleştirilip birleştirilmeyeceğine karar vermesine izin verir.
Robert Harvey

Uygulamada, tüm geliştiricilerin efendilere erişimi varsa, bir fark yaratır mı?
Kaz

2
@ Goose Code incelemesi?
dadı

4
Mağazamızda Çekme İstekleri kullanmıyoruz. Çekme İstekleri anlayışım çoğunlukla kamuya açık kaynak kodlu bir projeniz olan Github'da kullanılıyor olmaları. Böyle bir projenin proje yöneticisi olarak, tüm dünyaya keyfi (ve potansiyel olarak zararlı) değişiklikler yapmak için projenizi ücretsiz olarak dizginlemek yerine, insanların değişikliklerini çekme istekleri şeklinde göndermelerini istersiniz, böylece inceleyebilirsiniz. siz onları ana dalda birleştirmeden önce değişikliklerini yapın.
Robert Harvey

4
Çünkü 3 veya 4 karmaşık
Mason Wheeler

Yanıtlar:


23

Çekme istekleri, herhangi bir kişi master'a geçebilse bile kontrol ve bakiye sağlar.

En büyük avantajı, kod incelemesi için bir fırsat sunmalarıdır. Çekimi yapmaktan sorumlu kişi, koda ve testlere bakabilir ve kuruluşun veya ekibin sahip olduğu her türlü yönergelere uyduğundan emin olabilir. Kod incelemesi için başka nedenler de vardır - eğitim, kusur veya iyileştirme bulma, ekibi sistem üzerinde çapraz eğitme, test kullanıcılarına sistemin beyaz kutu görünümünü verme.

Çekimi yapan kişi sistemin mimarisine aşina ise, değişikliklerin sistemin mimari vizyonuna uyduğundan emin olabilir, özellikle de tüm ekibin uzun vadeli vizyonu olmayabilir.

Çekme isteklerini kullanma alışkanlığı geliştirmek, gelecekte tüm ekibin ustaya erişmemesi gerektiğine karar verirseniz, ekibinize de yardımcı olabilir. Ekibiniz büyürse ve özellikle üründe yeni ve / veya Git'te yeni olan ekip üyeleriniz varsa, yöneticiye erişmelerine izin vermemek ürün bütünlüğü için daha güvenli olabilir.


5

Her iki özellik dallanma ve çatal + çekme istekleri yaptıktan sonra, hepiniz aynı ekip veya şirkette gelişirken çekme isteklerinin çok az avantaj sunduğunu düşünüyorum

Kod incelemesi için iyi bir mekanizma ve arayüz sunarlar, ancak aynı zamanda tüm 'işlerin bitmesi' sürecini karmaşıklaştırır ve yavaşlatırlar. Özellikle birçok küçük özelliğiniz varsa, her biri gözden geçirmeyi, birleştirmeyi ve daha sonra diğerlerini değişiklikleri çekmek için yeniden master ile birleştiriliyorsa. Ancak büyük özellikleriniz varsa bunları incelemek zorlaşır, bu yüzden bir bağlamaya yakalanırsınız. .

Aynı repodaki şubeler arasında çekme talepleri yapabileceğinizi söyledikten sonra. Çatallamak veya farklı izinlere sahip olmak zorunda değilsiniz.

Ek olarak, tüm metodolojiyi ve iş akışını göz önünde bulundurmalısınız. Ayrıca bir bilet sistemi, CI, otomatik kabul testleri vb. Var mı? Kod incelemeleriniz, kodlar yayınlanmadan önce hayati bir tek denetim sağlıyor mu yoksa yalnızca iş akışınızdaki diğer denetimler tarafından gereksiz yapılan lastik damga egzersizleri mi?


4

Conway Yasası adı verilen bir gözlem var:

sistemleri tasarlayan kuruluşlar ... bu kuruluşların iletişim yapılarının kopyaları olan tasarımlar üretmeye sınırlıdır.

Bunun çekme istekleriyle ne ilgisi var? Çekme istekleri, kodunuz için kritik bir kavşaktaki büyük bir iletişim kanalıdır. Kod, test ve üretimin bir sonraki aşamasına geçmeden önce gözden geçirme, otomatik test ve iyileştirme fırsatı sunar; bu değişikliklerin geri alınması çok daha zordur ve çok daha fazla insan için çok daha fazla zaman harcar.

Aynı şekilde, Conway Yasası, temiz bir şekilde ayrılmış özerk sorumluluk alanlarına ve iyi tanımlanmış arayüzlere sahip bir mikro hizmet mimarisine sahip olmak istiyorsanız, kuruluşunuzun iletişim kanallarının ulaşmak istediğiniz mimariyi yansıtması gerektiğini önermektedir. Bu, 5-10 kişilik küçük ekiplerin herhangi bir mikro hizmete doğrudan bağlı erişime sahip olması gerektiği anlamına gelir ve bu ekip dışındaki herhangi bir kişinin bir çekme isteği yapması gerekir. Bu, bir mikro hizmete en aşina olan kişilerin bunu gözden geçiren ve tavsiye eden kişiler olmasını sağlar.

Herkesin her yere doğrudan bağlı erişimi olan büyük bir organizasyonunuz olduğunda, en az dirençli iletişim kanallarınız sizi büyük bir çamur mimarisi topu üretmek için kuruyor.

Çekme talepleri sadece karşılığında herhangi bir işlem yapmazsanız yük gibi hissedersiniz. Bir hafta boyunca hiçbir şey yapamayacağım ortamlarda çalıştım çünkü yapı her zaman kırıldı ve birisinin bir çekme isteği gönderdiği ortamlarda çalıştım ve bunu kırmak zorunda kalmadım çünkü CI derlemesi ve size söylüyorum, çabalarının her saniyesine değer.


1

Karl Bielefeldt kesinlikle haklı. Ben eklemek istiyorum: her şey kalite ile ilgili.

Birçok (en çok?) Mağazanın gelişimi yönetmek için resmi bir süreci yoktur, bunun sonucunda şu sonuç ortaya çıkar: "Yapı her zaman bozulduğu için bir hafta boyunca hiçbir şey yapamayacağım ortamlarda çalıştım ve çalıştım birisinin bir çekme isteği gönderdiği ortamlarda ve CI derlemesini bozdukları için incelemem bile gerekmiyor ve size söylüyorum, çabalarının her saniyesine değer. "

Gerçekten çabaya değer.


Yorumun için teşekkür ederim. Bunu neden soruya cevap olarak uygulayacağımdan emin değilim.
Goose

Birleştirme öncesi CI'den bahseden tek cevap budur.
Basilevs

0

Kod incelemesi için çekme istekleri kullanıyoruz - hiçbir kod çekme isteği geçirmeden ana geliştirme dalına (normalde bizim durumumuzda “gelişir”, ancak bazen “master”) birleştirilmemelidir. Bunu depo denetimleriyle zorlamıyoruz, ancak bunun gerekmediği için - geliştiricilerimiz süreci kötüye kullanamayacak kadar olgun.

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.