Tampak jelas untuk mengatakan, tetapi: tujuan nomor versi adalah untuk memudahkan Anda menentukan versi perangkat lunak yang dijalankan siapa pun.
Jika ada kemungkinan ada orang yang memiliki akses ke iterasi tertentu dari kode, dan sebaliknya tidak dapat dengan mudah menentukan pengidentifikasi unik, maka iterasi harus memiliki nomor versi yang unik. Saya melihat ini sebagai 'aturan pertama'. Sebagai akibatnya, rilis yang berbeda jelas akan menginginkan nomor versi yang berbeda.
Namun, lebih banyak berperan:
Satu cara untuk memastikan hal ini adalah dengan menabrak nomor versi dengan setiap komit tetapi ini biasanya bukan ide yang baik. Mungkin diperlukan beberapa komitmen / iterasi untuk mendapatkan perubahan yang relatif kecil, dan membingungkan bagi dunia luar untuk melihat versi 0.0.1 -> 0.0.2 sebagai hasil dari sejumlah besar akumulasi perubahan kemudian 0.0.2 -> 0.0 0,56 karena seseorang yang melakukan spasi putih memperbaiki satu file pada satu waktu dan tidak mengubah apa pun yang fungsional.
Seberapa jauh dari "satu versi per rilis penuh" ke "satu versi untuk setiap komit" benar-benar terserah: Anda, pengguna lain, dan sistem apa yang Anda ingin gunakan untuk mengisi kesenjangan.
Saya pribadi terbiasa mengerjakan proyek-proyek kecil, dan saya senang menggunakan hash git hingga versi yang digunakan orang lain dan versi benjolan untuk masing-masing (tidak peduli berapa sedikit orang yang saya harapkan untuk mendapatkannya). Namun di perusahaan yang lebih besar dan proyek yang lebih besar sesuatu di luar nomor versi semantik, tetapi kesetiaan yang lebih rendah daripada komitmen masing-masing, seperti penomoran kandidat rilis digunakan. Ini memiliki kelebihan tetapi menambah kompleksitas.