Bir taahhüt ne zaman sürüm etiketlenmemelidir?


30

Bağlam: Geçenlerde Semantik Sürüm Oluşturmayı öğrendim ve pratik olarak kendi projelerim için en iyi şekilde nasıl kullanılacağını belirlemeye çalışıyorum.

Sömürücü, büyük değişiklikler, küçük değişiklikler ve düzeltme eklerini dikkate alırken, bir güncelleme ne zaman güncellenmiş bir sürümle etiketlenmemelidir? Bana öyle geliyor ki her değişiklik bu kategorilerden birine uyacak ve her değişiklik versiyonlanmalı, fakat GitHub'daki çeşitli popüler projelere baktığımda, işler böyle yürüyor gibi görünmüyor (sadece büyük projelerin sadece yüzlerce etiketle onbinlerce komisyona sahip olduğu gerçeği).


23
Is her projenizde istikrarlı, test, kalite güvence salınımını master taahhüt?
Alex,

1
@AlexReinking Her taahhüt test edildi, ancak sadece kişisel projelerimle ilgili ortak uygulamalara alışmaya çalışıyorum, bu yüzden sadece ben çalışıyorum ve bu nedenle "değişiklik yapmak, test etmek dışında başka bir sistem yok. kendim, taahhüt et ".
VortixDev

Ayrıca etiketlerin daha sonra değiştirilebileceğini unutmayın. Sağlam tek kesin tanımlayıcı, kesin karma anahtarıdır.
Thorbjørn Ravn Andersen

9
Her usta taahhüt ??? Asla usta olmayı taahhüt etmemelisin. Master için her birleştirme çok daha iyi sesler.
Xyious

2
Sanırım @xyious kafasına çiviyi vurdu. Master'da sona eren her taahhüt, bir sürümle etiketlenmelidir çünkü Master'da yapılan her bir taahhüt, geliştirilmekte olan bir sürüm olmalıdır .
BJ Myers

Yanıtlar:


71

Endişeler sürüm SemVer bültenleri , değil taahhüt . Sürüm kontrol modeliniz, her bir master kararının bir sürüm olmasını gerektiriyorsa, o zaman evet, her taahhüdün değişimin derecesine göre etiketlenmesi gerekir.

Genel olarak, yine de, projeler ustada çoğunlukla istikrarlı bir ürün geliştiriyor ve desteklenmeye değer gördüğü sürümleri etiketliyor. Bunu yaptıklarında, özellikle SemVer olması gerekmeyen versiyonlama şemalarına göre etiketleyeceklerdir.


5
SemVer çoğunlukla sadece kullanıcının diğer kod parçaları olduğu ve insanları değil kütüphaneleri için anlamlıdır. Kullanıcıların otomatik olarak yeni sürüme adapte edebildikleri için, çoğu kullanıcının karşılaştığı uygulamalarda herhangi bir "kırılma" değişikliği yoktur.
Qwertie

5
Kullanıcıların karşılaştığı uygulamaların komut satırı sürümlerinin bayrak ve çıktı biçimlerinin farklı davranabilmesi nedeniyle anlamsal olarak sürümlendirilmesi gerektiğini savunuyorum. Gri bir alanın biraz.
Alex,

5
@ Qwertie Kullanıcı beklentileri, yazılım beklentilerinden daha az katıdır, ancak yine de vardır. KESİNLİKLE, arayüzlerinde veya işlevlerinde değişiklikleri 'kırmak' olarak düşündüğümü yayınlayan birçok yazılım parçası kullandım. Neyin majör ve küçük bir salıverme olduğuna karar vermek kesinlikle kütüphanelerden daha özneldir, ancak bu mutlaka onlardan kaçınmak için bir neden değildir.
Demir Gremlin

11
@Qwertie - yükseltme işlemini geri al. Kaç kişi hala eski Windows ve Office sürümlerini çalıştırıyor?
Alex,

5
@Qwertie Değişiklik günlüğünü veya belgelerini dikkatle okumaktan ilham alabilirler, böylece sistemi yeni veya değiştirilmiş özelliklerden yararlanmak için kullanma şeklini uyarlayabilirler veya kaldırılmış bir özellik için geçici çözümler bulabilirler. Aynı durum, yazılımı kullanması nedeniyle yazılım kullanımının da değişmesi gerekiyor, çünkü yazılım değişti, bu nedenle onlara bu değişikliği açıkça söylemelisiniz.
Iron Gremlin

11

Sürüm numaraları sürümlere tahsis edilmiştir. Genel olarak her taahhüt bir tahliye olmamalıdır. Bunun birkaç nedeni var.

Öncelikle her testte "test" derken, test seviyeleri var. Bir makinede otomatik bir test ünitesinin çalıştırılması her şey yolunda ve iyidir, ancak karmaşık yazılımda muhtemelen her konuyu yakalayamaz. Bazı konular donanıma veya yapılandırmaya özgü olabilir, bazı konular, test edilebilir zorunluluklardan ziyade, insan öznel düşünceleriyle ilgili olabilir.

İkincisi, büyük sürüm numarasını çarpmak nadir görülen bir eylemdir. Temel olarak, yazılımınıza bağlı olan her şeyin, kaldırılan özelliklerden herhangi birine bağlı olup olmadığını görmek için manuel olarak kontrol edilmesi gerektiği anlamına gelir.

Bunun bir sonucu olarak, özellikleri "genel API" nize yalnızca tam (alfa / beta değil) sürümlerinde eklemelisiniz, eğer bu özellikleri uzun süredir mevcut formlarında desteklemeye hazırsanız.

Üçüncüsü, yaygın kullanımdaki sürüm sayısını azaltmak. Sabit bir dalda bile, bir dizi düzeltmeyi bir araya getirmek ve her düzeltme için bir onaylama yapmak yerine tek bir sürüm yapmak genellikle daha iyidir.


2

Söylemek açık görünüyor, ancak: sürüm numaralarının amacı, hangi yazılımın çalışmakta olduğunu kolayca belirlemenizi sağlamaktır.

Herhangi birinin kodun belirli bir yinelemesine erişebilmesi ve benzersiz bir tanımlayıcıyı kolayca belirleyememesi olasılığı varsa, yinelemenin benzersiz bir sürüm numarasına sahip olması gerekir. Bunu 'ilk kural' olarak görüyorum. Sonuç olarak, farklı sürümler açıkça farklı sürüm numaraları isteyecektir.

Ancak, daha fazlası devreye giriyor:

Bundan emin olmanın bir yolu, sürüm numaralarını her bir taahhütle çarpmaktır, ancak bu genellikle iyi bir fikir değildir. Göreceli olarak küçük bir değişikliğin çalışması için birkaç taahhüt / yineleme gerekebilir ve çok sayıda birikmiş değişiklik sonucunda 0.0.2 -> 0.0.2 versiyonunu görmek dış dünyaya kafa karıştırıcı olabilir. .56 çünkü biri beyaz boşluk işledi, her seferinde bir dosyayı düzeltti ve işlevsel hiçbir şeyi değiştirmedi.

"Her sürüm için bir sürüm" den "her bir işlem için bir sürüm" den yolun aşağısına ne kadar kaldı: siz, diğer kullanıcılar ve boşlukları doldurmak için hangi sistemleri kullanmak istiyorsunuz?

Şahsen küçük projeler üzerinde çalışmaya alışkınım ve başkalarının kullandığı bir sürüme ve her biri için bir çarpma sürümü olana kadar git karmalarını kullanmaktan mutluyum (ne kadar az insanın eline geçmesini beklediğim önemli değil). Ancak daha büyük şirketler ve daha büyük projelerde anlamsal sürüm numaraları dışında bir şey, ancak sürüm adayı numaralandırması gibi her işlemden daha düşük sadakat kullanılır. Bunların avantajları var ama karmaşıklık katıyor.


0

Master ile birleştirilen her çekme talebi versiyonlanmalıdır.

Yeni bir sürüm (en az bir düzeltme eki) olmaması gerekiyorsa, / fix / etc özelliği tam olmadığından büyük olasılıkla master ile birleştirilmemelidir.

Bununla birlikte, ekibinizin iş akışına bağlı olarak, bir sürüm olmadan master yapmak için hala birden fazla taahhütte bulunabilirsiniz. Çekme isteğinde ezilme olmayan birkaç işlem varsa (Bence olmamalıdır), yine de 10 işlem ve sadece 1 yeni sürümle sonuçlanabilir.

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.