Jika skema versi semantik klasik "MAJOR.MINOR.PATCH" masuk akal, tergantung pada siapa Anda menyebarkan, dan terutama kapan dan seberapa sering Anda menyebarkan ke pengguna akhir . Skema ini paling berguna jika Anda bekerja dengan rilis stabil "4.5", di mana Anda mulai dengan 4.5.0. Versi 4.5.1, 4.5.2, dan seterusnya hanya berisi perbaikan bug, sementara Anda secara internal sudah bekerja pada versi 4.6.
Misalnya, jika Anda memberikan "cabang stabil" kepada pengguna akhir Anda, berikan versi 4.5.0 untuk penyebaran awal, dan 4.5.1, 4.5.2 setiap kali Anda merilis patch. Dalam pengembangan "agile" internal dan penyebaran mid-sprint, Anda sudah dapat memiliki versi 4.6, sebut saja "versi beta". Setiap kali Anda menyebarkannya di sprint tengah, tambahkan nomor build yang dibuat secara otomatis seperti "4.6.beta build 123". Ketika sprint Anda berakhir, tetapkan "4.6.0", dan alihkan nomor versi untuk sprint berikutnya secara internal ke "4.7". Memulai dengan ".0" hanya sebuah konvensi, Anda juga dapat menggunakan ".0" untuk menandai versi-beta, dan mulai dengan ".1" untuk pengguna akhir Anda. IMHO kata "beta" jauh lebih ekspresif, memberi tahu semua orang sprint "belum selesai".
Jika Anda merilis log perubahan pengguna akhir lengkap dengan setiap versi beta terserah Anda, tetapi setidaknya pada akhir sprint log perubahan harus diselesaikan, dan setiap kali Anda memberikan perbaikan bug kepada pengguna akhir, Anda juga harus memperbarui dokumen sejarah.
Anda akan menemukan strategi melepaskan dua cabang yang terpisah, satu cabang "stabil" dengan nomor versi semantik, dan "cabang pengembangan" yang ditandai dengan nomor bangun atau yang serupa, di banyak produk sumber terbuka seperti Inkscape, Firefox atau 7-zip.
Namun, jika Anda tidak bekerja dengan cabang stabil dan pengembangan yang terpisah, dan merilis versi baru kepada Anda pengguna akhir setiap hari, Anda juga harus menambah nomor versi setiap hari. Untuk kasus seperti itu, nomor versi "4.5.1", "4.5.2", ... mungkin akan mencerminkan penerapan individual Anda, dan tidak menunjukkan perbedaan antara perbaikan bug dan perubahan lainnya. Itu bisa ok, itu tidak klasik "versi semantik" lagi. Dalam skenario ini, Anda juga bisa menggunakan versi 4.5, 4.6, 4.7, 4.8, yang tidak memberikan perbedaan nyata.
Mengenai pertanyaan Anda tentang entri di changelog Anda: IMHO ketika sesuatu terlihat oleh pengguna akhir, ada baiknya entri di changelog, segera setelah Anda menerapkan perubahan. Misalnya, jika Anda menggunakan fitur toggle dan membuat perubahan pada beberapa fitur setengah-panggang yang belum diaktifkan untuk pengguna, itu tidak termasuk ke dalam changelog. Jika Anda hanya melakukan refactoring, tanpa ada perubahan yang terlihat kepada pengguna, itu bukan milik changelog. Jika Anda memperbaiki bug yang dapat mempengaruhi beberapa pengguna, itu pasti masuk ke changelog - dan itu harus disebutkan di sana pada saat yang sama ketika Anda menggunakan perbaikan bug. Dan tidak masalah jika Anda merilis harian atau bulanan atau tahunan.