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.