it-swarm.dev

MAJOR.MINOR.BUILDNUMBER.REVISION içindeki yapı numarası tam olarak nedir

Yapı Numaraları hakkında ne düşündüğüm, her gece yeni bir yapı oluşturulduğunda, yeni bir BUILDNUMBER oluşturulur ve bu yapıya atanır. Bu yüzden 7.0 sürüm uygulamam için gece yapıları 7.0.1, 7.0.2 ve benzeri olacak. Öyle mi? Peki yapı numarasından sonra REVISION'ın kullanımı nedir? Yoksa REVISION kısmı her gece yapımından sonra mı artırılıyor? Ben burada biraz kafam karıştı ... her gece inşa [~ # ~] yapı [~ # ~] olarak adlandırır mıyız?

Biçim burada belirtilmiştir: AssemblyVersion - MSDN

56
A9S6

Bu formda yazıldığını hiç görmedim. Çalıştığım yerde, MAJOR'un büyük bir sürüm (genellikle birçok yeni özellik veya kullanıcı arayüzünde veya altta yatan işletim sisteminde değişiklikler) olduğu MAJOR.MINOR.REVISION.BUILDNUMBER formunu kullanıyoruz, MINOR küçük bir sürümdür (belki de bazı yeni özellikler) önceki bir büyük sürüm olan REVISION, genellikle önceki küçük bir sürüm için bir düzeltmedir (yeni işlevsellik yok) ve BUILDNUMBER, bir revizyonun her son sürümü için artırılır.

Örneğin, KG'de (kalite kontrol) bir revizyon yayınlanabilir ve değişiklik gerektiren bir sorunla birlikte geri gelirler. Hata düzeltildi ve aynı REVISION numarasına sahip bir QA'ya bırakıldı, ancak BUILDNUMBER artırıldı.

58
tcrosley

Bütün karışıklık, MS'nin "Yapı numarası" ve özellikle "Revizyon" için kullandığı farklı anlambilimden kaynaklanmaktadır. Terimler sadece farklı şeyler ifade eder.

Çoğu kişi (ben dahil) anlamsal sürüm numaralandırma şeması kullanır; burada herhangi bir nedenle yeni bir yapı yapmanız gerektiğinde daha yüksek bir YAPI numarası alırsınız. Bizim için bir düzeltme yalnızca başka bir kod değişikliği olarak kabul edilir ve BUILD bölümü her CI çalıştırmasında otomatik olarak artar. Aynı MAJ.MIN.REV değerine sahip modüller değiştirilebilir olarak kabul edilir ve BUILD size hangisinin en yeni olduğunu söyler.

Ancak REVISION'ın artırılması yeni bir kalıcı serbest bırakma dalını gösterir, bu yüzden onu BUILD'den önce yerleştiriyoruz. Bu yaklaşımın dezavantajı, aşağıdaki olay sırasını elde edebilmemizdir:

  • taahhüt numarası 4711: Alice A özelliğini ekledi
  • CI 1.2.3.100 derlemesi üretiyor
  • taahhüt numarası 4712: Bob değiştirilmiş özellik B
  • taahhüt numarası 4713: Alice sabit özellik A ("düzeltme")
  • CI, 1.2.3.101 sürümünü oluşturur

major.minor.revision.build

Gördüğünüz gibi, düzeltme bir sonraki derlemedeki tek değişiklik değil, Bob'un modifikasyonu da bu derlemenin bir parçası haline geldi. Mevcut dalı stabilize etmek istiyorsanız, Bob'un sadece bir grup hata ekleyip eklemediğinden emin olamayacağınız için sıkıntılarla karşılaşabilirsiniz.

MS her iki terimi de farklı kullanır. BUILD numarası otomatik olarak artırılmaz, bunun yerine kodun belirli bir sürümü için kullanılan kodu dondurmak için bir tür serbest bırakma dalı olarak düşünülebilir. REVISION, bu BUILD şubesine uygulanan ek "sıcak" değişiklikleri belirtir. Bu nedenle dizi şu şekilde olacaktır:

  • taahhüt numarası 4711: Alice, bagaj/master'a A özelliği ekledi
  • Carl yapı dalı 1.2.100
  • CI 1.2.100.0 derlemesi üretiyor
  • taahhüt numarası 4712: Bob modifiye gövde/master B özelliği
  • taahhüt numarası 4713: Alice, 1.2.100 şube
  • CI, 1.2.100.1 sürümünü üretir

major.minor.build.revision

REVİZYON terimi,

  • a product revision (that's how most people use it)
  • belirli bir günlük yapının revizyonu (MS'in yaptığı budur)

İki işlem arasındaki temel fark, düzeltmelerin CI derlemelerine uygulanabilmesini isteyip istemediğiniz ve böylece dalın işlemin hangi noktasında yapıldığıdır. Tüm testler başarılı olduktan sonra herhangi bir zamanda belirli bir yapıyı seçmek ve tam olarak bu sürümü ürününüzün bir sonraki resmi sürümüne tanıtmak istediğinizde bu özellik önemli hale gelir.

Bizim durumumuzda CI aracı bir havuz etiketi oluşturur, bu nedenle gerektiğinde her zaman gerekli bilgileri kullanmaya hazırız. Etiketler ve dallar tam olarak aynı şekilde uygulandığından SVN ile daha da kolaylaşır - bir etiket, /tags.

Ayrıca bakınız

FAQ bölümündeki TFS dallanma stratejisi :

Hangi dalda P1 (düzeltme) biletini düzeltmeliyim?

  • P1, Üretimde çalışan kod tabanına en yakın dalda sabitlenmelidir. Bu durumda P1, Prod dalına sabitlenmelidir. Düzeltmeyi başka bir dalda uygulayarak ve üretimdeki değişiklikleri uygulayarak, sonraki yinelemelerden yarı mamul veya test edilmemiş kod yayınlama riskiyle karşı karşıya kalırsınız.

  • Şimdi doğrudan Prod şubesine karşı çalışmanın güvenli olup olmadığını tartışabilirsiniz, tekrar düşünün, acil dikkat gerektiren bir P1 sistemde temel bir sorun olmamalıdır. Temel bir sorun olması durumunda, müşteri ile daha fazla analiz ve tartışma gerektirebileceğinden Ürün biriktirme listesine eklenmelidir.

Başka bir iyi okuma TFS dallanma kılavuz

20
JensG

Microsoft, .NET sürüm numarasının her bir bileşeninin amacını Version sınıfı için MSDN belgelerinde açıklamaktadır. İlgili bölüm:

major.minor [.build [.revision]]

Bileşenler konvansiyon tarafından aşağıdaki gibi kullanılır:

Büyük: Aynı ada sahip ancak farklı büyük sürümleri değiştiremezsiniz. Daha yüksek bir sürüm numarası, geriye dönük uyumluluğun kabul edilemediği bir ürünün büyük bir yeniden yazımını gösterebilir.

Küçük: İki derlemedeki ad ve ana sürüm numarası aynıysa, ancak küçük sürüm numarası farklıysa, bu geriye dönük uyumluluk niyeti ile önemli bir gelişme gösterir. Bu daha yüksek küçük sürüm numarası, bir ürünün bir nokta sürümünü veya bir ürünün geriye dönük olarak tam uyumlu yeni bir sürümünü gösterebilir.

Derleme: Derleme numarasındaki bir fark aynı kaynağın yeniden derlenmesini temsil eder. İşlemci, platform veya derleyici değiştiğinde farklı yapı numaraları kullanılabilir.

Revizyon: Aynı isim, ana ve küçük sürüm numaralarına sahip, ancak farklı revizyonların tamamen değiştirilebilir olması amaçlanmıştır. Daha önce yayımlanmış bir Montajdaki güvenlik boşluğunu sabitleyen bir yapıda daha yüksek bir revizyon numarası kullanılabilir.

http://msdn.Microsoft.com/en-us/library/system.version.aspx

17
Cole Campbell

Yapı numarası referansını hayal edebileceğim en az birkaç farklı şey var:

  1. Yayınlanan kaynak kontrol sürümü. Örneğin, # 12345 revizyonunun bir sürümü varsa, bu, yapı numarası olacak şekilde izlenebilir ve yamalı ise, büyük veya küçük sürümleri artıracak yeni bir işlevsellik olmadığı için revizyonlar artabilir. ve birisinin bu yapıyı tekrar çalıştırmak istemesi durumunda yapı numarası hatırlanmalıdır.

  2. Sürekli tümleştirme sunucusu Tanımlayıcısı. Bu durumda, CI sunucusu çalıştırdığı her yapıyı numaralandırabilir ve bu nedenle yapı numarası başarılı bir yapının elde ettiği şeydir ve bu senaryoda revizyon kısmına gerek yoktur.

Bilmediğim başkaları da olabilir, ancak bunlar kod tabanlarındaki sayılara geldiğinde bildiğim büyükler.

4
JB King

Bir yapı numarası genellikle her yapıda artar, bu nedenle benzersizdir.

Basitlik olması açısından, MAJOR veya MINOR numaraları her çarpıldığında yapı numarasını sıfırlar.

Çoğu Sürekli Entegrasyon motoru, otomatik olarak üretilen benzersiz yapı numaralarına izin verir.

3
user1249

Revizyon yapıların yamaları için kullanılabilir. Diyelim ki 2 takım bir ürün üzerinde çalışıyor.

Takım 1 büyük geliştirme ekibi ve X'in artırıldığı aşağıdaki sürüm şeması 1.0.X.0 ile her gece derleme üretiyor. Şimdi inşa ediyorlar 1.0.50.0 Takım 2 zaman zaman bir yapı alıyor. Diyelim ki geçen hafta 1.0.43.0 olan derlemeyi alıp kullanmaya başlıyorlar. Takım 2 1.0.43.0'da bir sorun bulduğunda Takım 1, 1.0.51.0'a ilerler.

Şimdi takım 1 bu yapıyı alacak (43), sorunu düzeltecek ve takım 2'ye yapı 1.0.43.1 sağlayacaktır. Düzeltme ana yapıda da yayılabilir, bu nedenle değişiklik 1.0.52.0'da görünecektir.

Umarım bu açık ve yararlıdır.

* Revizyon, projede yer alan herkes aynı derlemeyi kullanmadığında ve belirli derlemeleri düzeltmeniz gerektiğinde yararlıdır.

2

Sadece nasıl gördüğümü ve kullandığımı söyleyeyim ....

ProgramAdı sürümü major.minor.build.revision

major: Benim için üzerinde çalıştığım mevcut proje. Aynı program adına sahip yeni bir proje başlatana kadar sayı değişmeyecek. Bu, kelimenin tam anlamıyla aynı cinsiyetten yeni bir program yazacağım anlamına gelir (örnek: erişim v1 - erişim v-2 - erişim v-3 * aynı programın tümü ancak tamamen yeniden yazılmıştır).

minör: Bu şu anda yayınlanan projeye işlevsellik eklediğim anlamına geliyor. Örneğin, bir makbuz basma veya resim alma yeteneğini ekledim. Temel olarak ek işlevsellik Şimdi eklemek istiyorum ve sonraki büyük sürümü bunu yapmak için beklemek yok.

build: Bu, yayınlanan major.minor sürümünde çok küçük değişiklikleri göstermek için kullanıyorum. Bu, düzende, renk düzeninde vb. Bir değişiklik olabilir.

revizyon: Bu yayınlanan yayınlanmış major.minor.build bir hata düzeltmesi belirtmek için kullanın - Mevcut projede ilerleme değil ve bir hata ortaya çıkıyor durumlar vardır. Bu hatanın düzeltilmesi ve yayınlanması gerekiyor. Bu, düzgün çalışmak için zaten yayınladığımı düzelttiğim anlamına geliyor. Yeni bir yapı, yeni bir ek üzerinde çalışıyorsam veya yeni bir ana sürüm başlattıysam bunu da kullanırım. Bir sonraki ana, ikincil veya derleme sürümünü beklerken yayınlanan sürümün açık bir şekilde yamalanması gerekiyor.

Böylece bu şekilde bitmiş veya durdurulan bir proje hala düzeltilebilir ve bir sonraki sürüm yayınlanana kadar kullanılabilir hale getirilebilir.

Umarım bu birisine bu tip versiyonlamanın nasıl çalışacağını (veya yapması gerektiğini) daha iyi anlar. Bana göre, bu tip sürümleri kullanırken her türlü gerçek anlam taşıyan tek tanım ve uygulama.

2
Richard Rindom

Sürüm numarasını yalnızca sürüm kimliğindeki son sayı olarak gördüm. Bir yapı numarası için nasıl revizyon yapacağınızdan emin değilim. Belki bazı yapılı olmayan kaynakları (simgeler, DB komut dosyası, vb) değiştirdiyseniz, ama son zamanlarda üzerinde çalıştığım çoğu proje de sürüm kontrolü altında tüm bu şeyler var, bu yüzden inşa süreci onları alır zaman varsayalım yükleyici/serbest bırakma. @David'in açıkladığı gibi olmasa da zaman damgalı derleme sayılarını seviyorum (major.minor.revision.HHMM'yi seviyorum). Ancak, çalıştığım yerde, sadece inşa sunucumuzun oluşturduğu sıralı bir sayı kullanırız.

1
TMN

Jkohlhepp gibi, sürümün üçüncü bölümünü Subversion'daki revizyon numarasını ve dördüncüsünü sürekli entegrasyon sunucumuzdan (Jenkins bizim için) yapı numarasını göstermek için kullanıyoruz. Bu bize birkaç avantaj sağlar - CI sunucumuz tarafından ayarlanan sürüm numarasına sahip olmak, aksi takdirde yanlışlıkla kaçırılabilecek manuel bir adımı kaldırır; bir geliştiricinin geliştirme bilgisayarlarından arsız bir sürüm yapmadığını kontrol etmek kolaydır (bu sayıların sıfır olmasına neden olur); ve herhangi bir yazılım parçasını, sadece zaman zaman çok yararlı bulduğumuz sürüm numarasına bakarak, ve tarafından oluşturulan CI işinden oluşturduğu koda geri bağlayabilmemizi sağlar.

1
Jon Lawson

Olmasını istediğiniz her şeydir. Binbaşı.yapı.yönetim için year.month.day.hhmm kullanma eğilimindeyim. Dakikada bir defadan fazla üretiyorsam, bir sorun var. sadece basit bir artış kullanabilirsiniz, ya da onlar için bazı ayrıntılı jeneratörler gördüm. Ne yapmak sen olmasını ister. Yapmaları gereken şey, bu çıktıyı oluşturmak için kullanılan kaynağa ulaşmanızdır, böylece bunu yapabilmeniz ne olursa olsun.

0
BlackICE

Son iki basamak toplam derleme sayısıdır

1.01.2.1234

yapı numarası 2.1234'tür, ancak çoğu kişi 1234 kullanacaktır, çünkü 2 bölüm sık sık değişmemektedir.

0
lance lyons

Ekibimiz, Subversion deposundaki revizyon numarası olarak üçüncü numarayı (revizyon) kullanır. Dördüncü sayıyı (derlemeyi) TeamCity sürekli entegrasyon sunucumuzdan derlemeyi oluşturan derleme numarası olarak kullanırız. TeamCity, oluşturma işlemi sırasında içinde # sayısı olan yeni bir AssemblyInfo dosyası oluşturur.

0
RationalGeek