Çekme isteği yazarının birleştirilmesi gereken kod inceleme iş akışı


16

Şirketimdeki birkaç ekip daha önce hiç görmediğim bir kod inceleme iş akışı uyguluyor. Tüm şirketi tutarlı hale getirmenin bir değeri olduğunu düşünerek, arkasındaki düşünceyi anlamaya çalışıyorum. (Birden fazla kod tabanına katkıda bulunuyorum ve geçmişteki farklılıklar tarafından tetiklendim.)

  1. Kod yazarı bir çekme isteği gönderir
  2. Hakem kodu inceler
    • Hakem onaylarsa, "İyi görünüyor, birleşmekten çekinmeyin" satırları boyunca bir yorum bırakıyorlar
    • İncelemenin endişeleri varsa, "Lütfen X ve Y gibi küçük sorunları düzeltin, sonra birleştirin" gibi bir yorum bırakırlar (Büyük değişiklikler için 2. adıma dönün)
  3. Kod yazarı gerekirse değişiklikleri yapar ve ardından kendi çekme isteğini birleştirir

Aşağıdaki endişelerim var:

  • 3. adımdaki onay durumunda, bu iş akışı çekme isteği yazarına gereksiz gibi bir gidiş dönüş oluşturur. Zaten koda bakan gözden geçiren, onu hemen birleştirebilir.

  • 3. adımda değişiklik istenmesi durumunda, çekme talebini birleştiren ajans şimdi sadece PR'nin yazarına aittir. Yazarın yanı sıra hiç kimse birleşmeden önce değişikliklere bakmaz.

Bu iş akışının diğer avantajları ve dezavantajları nelerdir? Bu iş akışı diğer mühendislik ekiplerinde yaygın mıdır?


5
Kuruluşunuzdaki insanlara neden bu özel iş akışını seçtiklerini sordunuz mu? Muhtemelen ilgili değerleri aydınlatmak bizden daha iyi durumdalar. Sadece spekülasyon yapardık.
Robert Harvey

1
İnceleyici "Lütfen büyük X sorununu giderin" yazdığında kuruluşunuzda ne olur ?
Doc Brown

8
Deneyimlerime göre, orijinal yazarın çözümlenmesi gereken birleştirme çakışması olması durumunda birleştirme yapan kişi olması en iyisidir. Orijinal yazar genellikle bir birleşme çatışmasının nasıl çözüleceğini en iyi bilen kişidir.
17 of 26

Buradaki mantığı merak ediyorum. Meslektaşlarınıza sormalı ve kendi kendine cevap olarak yazmalısınız - burada çok iyi bir düşünce süreci veya mantığı olabilir. Ben hızlıca bir tane bulamıyorum.
Thomas Owens

Yanıtlar:


21

İlk durumda, bu genellikle bir nezakettir. Çoğu kuruluşta, birleşmeler başarısız olursa derhal ele alınması gereken bir dizi otomatik testi başlatır. Özellikle bir çekme talebinin gönderilmesi ile gözden geçirilmesi arasında önemli bir gecikme olursa, yazarın zaman çizelgesinde birleştirilmesine izin vermek kibardır, bu nedenle beklenmedik bir serpinti ile başa çıkmak için zamanları vardır. Bunu yapmanın en kolay yolu, onları birleştirmelerine izin vermektir.

Ayrıca, bazen yazar daha sonra bir çekme isteğinin henüz birleştirilmemesi gerektiğinin nedenlerini fark eder. Belki başka bir geliştiricinin PR'si daha yüksek önceliğe sahiptir ve çatışmalara neden olabilir. Belki ortaya çıkarılan bir kullanım durumu düşündü. Belki bir inceleme yorumu, sorun tamamen karşılanmadan önce daha fazla araştırılması gereken bir beyin fırtınasını tetikledi. Yazar kod hakkında en çok şey bilir ve birleştirildiği zaman ona son sözünü vermek mantıklıdır.

İkinci olarak, bu sadece bir güven meselesidir. Çift kontrol edilmeden küçük sorunları düzeltmek için insanlara güvenemezseniz, sizin için çalışmamalıdırlar. Sorun düzeltmeden sonra başka bir inceleme gerektirecek kadar büyükse, o zaman sormak için gözden geçirenler güven.

Bununla birlikte, bazen diğer yazarın çekme isteklerini birleştiriyorum, ancak genellikle çok basit değişiklikler veya herhangi bir test otomasyon hatası ile kişisel olarak çobanlık için sorumluluk aldığım harici kaynaklardan.


2
Görünüşe göre orada hayal ettiğimden daha fazla çeşitlilik var. Otomatik test ile ilgili deneyimlerim, testlerin birleştirilmeden önce şubeye karşı yürütüldüğünü, sonra değil, böylece birleştirme için önkoşul haline geldiğini göstermiştir. Ben de hatalar neden kendi dahil olmak üzere gözden geçirilmemiş "küçük" düzeltmeler gördük.
aednichols

2
Testler genellikle bir önkoşulun yanı sıra bir önkoşul olarak da çalışır. Birden çok daldaki değişikliklerin, kod çatışması olarak görünmeyecek ve testlerin başarısız olmasına neden olmayacak belli olmayan yollarla çakışması tamamen mümkündür. İşyerimde, bir şubenin temel daldan haberdar olmasını ve bu iki koşulun karşılanması durumunda birleştirme ve birleştirme adayı olmadan önce geçen tüm testlerin otomatik olarak yapılmasını istiyoruz. Her zaman bu ilk koşula sahip değildik - bundan önce her şubenin ayrı ayrı geçmesine rağmen nadiren ustalıkla tanıtılan sorunlar yaşadık
Matthew Scharley

3

İlk yazarın kendi çekme talebini birleştirmesi, küçük ekiplerde tercih ettiğim iş akışıdır. Bahsedilen teknik avantajlara ek olarak (örneğin, birleşme çatışmalarını çözme açısından), kültürel düzeyde değer kattığını düşünüyorum: Sahiplik duygusu yaratıyor.

Ben Belirtilen başlangıç başka bir geliştirici açık çekme isteği (iş-içinde-ilerleme özelliği dalı çekip ona geri iterek) için hareketin eklersiniz zaman (nadir) durumda yazarını. Bu sık olmaz ve bizzat bir konuşma sonucu veya üzerinde Slack olacaktır: (başkası tarafından) Bu ek onaylatabilirsiniz gerektiğini değil sürpriz orada karaya! Bu bağlamda, ilk yazar tarafından , çekme talebini göndereni kastediyorum.


2

Organizasyonumda çekme taleplerinde oldukça yeniyiz ve sorunuz kendimi düşündüğüm bir soru.

Eklemek istediğim bir gözlem: Bazı araçlarda (TFS kullanıyoruz), çekme isteğiyle ilişkili bir iş öğesi olabilir.

Bu durumda, gözden geçirenin birleştirmeyi ne zaman gerçekleştirdiğini takip etmek biraz güçlük çeker. Bu senaryoda geliştiricinin PR'yi yeniden ziyaret etmesi, hatayı açması veya isteği değiştirmesi ve 'çözülmüş' olarak işaretlemesi gerekir. Bunu çok erken 'çözülmüş' olarak işaretlersek, testçiler düzeltmenin zaten mevcut yapının bir parçası olduğuna inanırlar.

TFS 2017, çekme talebini uygulama konusunda iyileşti. Artık geliştirici, tüm koşullar yerine getirildiğinde Çekme İsteğinin otomatik olarak birleştirilmesini isteyebilir (birleştirme çakışması, gözden geçirenlerin onayı ve bozuk derlemeler yok). YMMV.


1

Bu şekilde, yazarın dalıyla ilgili fikrini değiştirme şansı vardır, belki de farklı bir şekilde yapılması gereken bir şey bulmuş ve ek masrafları incelenmek üzere geri koymuştur.

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.