Semua contoh versi semantik yang pernah saya lihat menunjukkan 3 komponen yang digunakan. Tidak lebih dari 2 karakter periode. Di $DAYJOB
, kami menggunakan 4 komponen dalam nomor rilis kami:
5.0.1.2
Apakah Semantic Versioning mengizinkan ini?
Dan sebagai pertanyaan sampingan level yang lebih tinggi dan lebih bisa diperdebatkan, apakah itu benar-benar penting? Saya mulai berpikir mungkin ide yang baik untuk menegakkan versi semantik, tetapi pada akhirnya entitas seperti PCI menimpanya.
Saya harus mengklarifikasi komentar PCI saya. Masalahnya adalah bahwa audit dan pengaruhnya terhadap biaya ketika komponen utama dan kecil berubah, belum tentu merupakan fitur baru yang sebenarnya. Misalnya, jika fitur terkait pembayaran diperkenalkan, kami menabrak nomor minor untuk PCI. Tetapi jika kita menambahkan fitur baru yang terkait dengan sesuatu di gui, itu tidak. Hanya tambalan yang berubah. Jadi dalam hal ini kita tidak benar-benar mengatakan dalam hal ini sebagai pengembang karena orang lain membuat keputusan itu.
sumber
MAJOR(PCI).MINOR(PCI).FEATURE.HOTFIX+BUILD
. Kami pada dasarnya hanya diizinkan untuk mengubah komponen ke-3 dan ke-4 tanpa melibatkan PCI (dan selanjutnya tuan PCI di perusahaan) yang terlibat. Bagi saya rasanya seperti ini sedikit dibuat-buat, saya tidak yakin mereka dibenarkan dalam cara mereka mengelola nomor versi, tetapi saya tidak cukup tahu tentang PCI dan proses audit untuk mengatakan sebaliknya.Jawaban:
Sepertinya Anda melewati konvensi normal hanya untuk menghindari proses overhead / audit. Itu ... menurut saya memprihatinkan.
Apa yang Anda lakukan adalah secara efektif membuat nomor versi tambahan (digit PCI kecil Anda) agak sengaja untuk memindahkan fitur / nomor versi minor Anda kembali ke suatu tempat, untuk tidak lagi memicu kriteria audit internal Anda.
Bagaimanapun, sampai ke pertanyaan Anda tentang versi semantik, spesifikasi untuk status Semantic Versioning :
Tekankan milikku.
Jadi pertanyaannya adalah, apakah Anda menggunakan karakter keempat untuk metadata pra-rilis / bangun? Atau apakah ini pada dasarnya indikasi versi lain yang Anda rilis?
Jika "ya", maka spesifikasi versi semantik mengizinkannya. Jika "tidak" maka secara teknis Anda tidak mengikuti versi semantik.
Apakah Anda ingin secara kaku mengikutinya atau tidak adalah keputusan yang harus Anda dan tim Anda buat. Tujuan pembuatan versi semantik adalah untuk membantu kompatibilitas API:
Ini adalah sistem yang membantu membuatnya lebih jelas ketika versi memengaruhi pengguna hilir API.
Selama API Anda sama jelasnya, itu bukan masalah besar yang Anda pilih. Versi semantik secara langsung, misalnya jika saya menggunakan 3.4.2 dan perlu meningkatkan ke 3.4.10 Saya tahu saya bisa melakukannya tanpa merusak apa pun. Jika versi baru 3.5.1 saya tahu itu kompatibel ke belakang. Dan saya tahu versi 4.0.1 akan menjadi perubahan besar.
Itu semua adalah bagian dari apa yang dimaksud dengan nomor versi.
Ok, ini baik-baik saja. Anda memiliki sistem yang berfungsi untuk Anda dan memenuhi kebutuhan Anda. Itulah gunanya versi.
Jika API Anda bersifat pribadi (hanya menghadap ke dalam), benar-benar tidak masalah bagaimana versi Anda selama itu masuk akal bagi Anda dan semua orang yang menggunakannya. Di mana versi dalam format standar penting adalah ketika Anda memiliki banyak konsumen lain dari API Anda yang perlu tahu "apa arti versi ini?"
Memiliki sistem versi yang sewenang-wenang akan membingungkan orang-orang yang terbiasa dengan sistem lain, seperti versi semantik. Tetapi jika tidak ada yang benar-benar menggunakan sistem versi Anda kecuali orang yang membuatnya - itu tidak masalah.
sumber
Dalam versi Semantic Versioning saat ini, yaitu 2.0.0 , no. Ada persyaratan yang mendefinisikan versi sebagai bentuk XYZ di mana X, Y, dan Z adalah bilangan bulat non-negatif yang tidak mengandung 0s:
Namun, kemampuan untuk menambahkan metadata diizinkan untuk:
Namun, sesuatu yang penting untuk dicatat adalah bahwa Semantic Versioning khusus untuk perangkat lunak yang menyatakan API publik:
Ini cenderung mendukung pengembangan perpustakaan atau layanan dan bukan pada tingkat aplikasi.
Yang penting untuk dipertimbangkan adalah apa arti nomor versi Anda, baik untuk penggunaan internal maupun eksternal. Versi hanyalah pengidentifikasi yang memungkinkan Anda berbicara tentang perbedaan dalam perangkat lunak pada dua titik waktu yang berbeda. Semantic Versioning adalah salah satu metode untuk menerapkan aturan ini, jadi jika Anda tahu bahwa suatu aplikasi menggunakan Semantic Versioning, maka Anda dapat lebih mudah menentukan tingkat upaya yang diperlukan untuk memperbarui paket Anda. Mengikuti standar umum mungkin baik, tetapi jika Anda tidak bisa karena alasan apa pun, mendokumentasikan aturan untuk pengguna Anda juga harus memadai.
sumber