Dogfooding sırasında bir aletin bir sonraki revizyonunu kullanmaya ne zaman başlanabilir?


9

Özellikle, ben bir DVCS ve derleme sistemi entegre bir araç üzerinde çalışıyorum, ama ben bir "meta" aracı (derleyici, VCS, derleme sistemi, test koşucusu, vb.) "dogfooding" yoluyla geliştirmek istiyoruz .

Benim sorum: dallanma iş akışını kullanan bir scrum tarzı serbest bırakma işleminde , aracın geliştirme döngüsünde aracın daha yeni bir sürümünü kullanmaya ne zaman başlayabilirim?

Arasında denge oluşturmak için bir süreç arıyorum:

  • developaracın sürümünü sürekli olarak kullanıyorum : Değişikliklerin birleşmesiyle kendi gelişimimi bozduğumu görüyorum.

  • masteraracın sürümünü sürekli olarak kullanın : dogfooding ile ortaya çıkardığım herhangi bir sorun zaten yayınlanmış olan sorunlardır.


Neyi başarmak istediğinize bağlıdır. Sadece bir ana sürümü satın almak yeterli olmalıdır. Eğer hataları ortaya çıkarmak istiyorsanız, her gece kullanmalısınız.
Andy

@ GlenH7 Teşekkürler! Buradan başladım: meta.programmers.stackexchange.com/questions/6074/…
Jace Browning

Yanıtlar:


5

Yapılacak ilk şey, çok kapsamlı otomatik çevrimdışı regresyon testlerine sahip olmaktır. Bu testleri geçmek, resmi olarak kullandığınız için minimum bir gerekliliktir.

İkincisi, otomatik testlerinizin yakalamadığı sorunlar için önceki çalışma sürümüne geri dönmenin basit ve basit bir yoluna ihtiyacınız var.

Örneğin, Linux çekirdeğim bir süreliğine özel yamalı. Çekirdeğimi kullanmayı amaçladığım aynı bilgisayarda yamalı ve derlerdim, bu da hatalı bir çekirdek oluşturursam geliştirme ortamımı kaybedebileceğim anlamına geliyordu. Bu yüzden GRUB menümde her zaman bilinen iyi bir çekirdeği sakladığımdan emin oldum, bu yüzden bir hata yaparsam, basit bir yeniden başlatma ile iyi bir geliştirme ortamına geri döndüm.

Bunu bir ekiple koordine etmek zordur, ancak bunun çoğunlukla herkesin bir geri dönüş başlatmasına ve nedenlerini iletmesine izin verme meselesi olduğunu düşünüyorum. Sürüm kontrolünde, bunu belirtmenin bir yolu , iş akışınızın last_known_goodarasında developve masterarasında bir yerde, şube gibi bir şey olabilir . Başarılı bir yapı dogfooded kadar hiçbir şey orada itilir.


1
Ben dogfood"arasında developve arasında bir yerde" ayrı bir şube (belki ) olması fikrini seviyorum master. Belki de releasedallar daldan gelmelidir dogfood.
Jace Browning

3

Bu araç, üretim kalitesinde yazılım üretmek için kullanılıyorsa (özellikle özyinelemeli olarak kullanılıyorsa, yani kendini geliştirmek için), ön test çalışmalarınızı artıracağım ve sürüm, üretim kodunu kullanarak kırmayacağınızdan oldukça eminim.

Ana sürümün bu düzeyde bir güvene sahip olmasını beklemek zorundaysanız, öyle olsun.


Bu, entegrasyon testi için kullanılacak "sahte" (üretim dışı) projeler oluşturmayı gerektiriyor mu?
Jace Browning

Bununla ara dahili sürümleri kastediyorsanız, evet.
Robert Harvey

1

Git de böyle bir araç ve tabii ki dogfooding. Ancak bunu farklı ortamlarda farklı ölçüde yapar. Ortak sunucular yalnızca sürümleri çalıştırırken, geliştiriciler genellikle ya next(projenin adı "geliştirme" için) ya da pu(geliştirmekten daha fazla gelişir) ile çalışır. Bazı sorundan engellenen herhangi geliştirici geri dönebilir nextya masterda bir şey tarafından engellenir ve ana depo etkilenmez zaman sorunlar buna bakarak temizlenebilir, böylece veya son sürümü.

Dallanma modeli, biraz farklı adlarla yukarıdakine benzer. masterbüyük sürümlerin yapıldığı şeydir, bir maintsonraki nokta sürümü için serbest bırakma dalıdır next, özelliklerin bir sonraki bütün birleştirildikten sonra zaten bir sonraki olduktan sonra ayrı olarak master için birleştirilebileceği küçük bir farkla gelişmeye benzer.

Fazladan bir şube var pu. Bu, entegrasyon için dikkate alınan tüm özellik dallarını birleştirerek oluşturulur next(dal her seferinde atılır ve yeniden oluşturulur). IIRC sadece test takımını geçerse yayınlanır. Son olarak bakıcı Junio'ya baktım, komut dosyalarını elle düzenli olarak oluşturmak için çalıştırıyordu, ancak bu tür komut dosyaları gece sürekli entegrasyon tarafından çalıştırılabilir ve Gerrit'in otomatik olarak oluşturduğuna inanıyorum .

Cevap bu şekilde. Geliştirme ortamlarında sahip olduğunuz en geliştirme sürümünü test edersiniz, ancak sürümleri oluşturmak için önceki sürümü kullanırsınız.


Bir puşey mi ifade ediyor?
Jace Browning

@JaceBrowning: Bunun "önerilen güncellemeler" anlamına geldiğine inanıyorum. Yine de referansım yok.
Jan Hudec

1

Kabul edilen cevaba dayanarak , aşağıdakilere benzer dalları korumak için dallanma iş akışını genişleteceğim :

  • master: release-*kapatıldıktan sonra birleşir
  • dogfood: dalları master; dogfooding sırasında tespit edilen düzeltmeleri içerir; developyazılımın dahili kullanım için "kararlı" olduğu andan itibaren birleşir ; bu şubenin başı gerektiğinde zamanda geriye taşınabilir
  • develop: dalları master; devam eden değişiklikler, hata düzeltmeleri ve bunlardan dogfoodve feature-*şubelerden birleştirme içerir
  • feature-*: dalları develop; belirli bir yeni özellik için değişiklikler içerir
  • release-*: dogfoodharici kullanım için yazılımın "kararlı" olduğu durumlarda dallar ; ile birleştirmeden önce dokümantasyon güncellemelerini ve küçük hata düzeltmelerini içerirmaster
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.