Apakah konvensi penamaan versi yang berbeda cocok untuk proyek yang berbeda? Apa yang Anda gunakan dan mengapa?
Secara pribadi, saya lebih suka nomor build dalam heksadesimal (mis. 11BCF), ini harus ditambah secara teratur. Dan kemudian untuk pelanggan nomor versi 3 digit sederhana, yaitu 1.1.3.
1.2.3 (11BCF) <- Build number, should correspond with a revision in source control
^ ^ ^
| | |
| | +--- Minor bugs, spelling mistakes, etc.
| +----- Minor features, major bug fixes, etc.
+------- Major version, UX changes, file format changes, etc.
sumber
$version = New-Object System.Version 1, 2, 3, 4; $version.ToString(); $version.Build;
Versi Semantik ( http://semver.org/ ) pantas disebutkan di sini. Ini adalah spesifikasi publik untuk skema versi, dalam bentuk
[Major].[Minor].[Patch]
. Motivasi untuk skema ini adalah untuk mengkomunikasikan makna dengan nomor versi.sumber
Saya tidak menggunakannya tetapi saya telah melihatnya dan ini adalah struktur yang menarik:
Year.Month.Day.Build
Cukup dijelaskan.
sumber
Saya mencoba menggunakan kebijakan Versi RubyGems Rasional di mana:
sumber
Berikut adalah pendekatan yang sangat bagus untuk penomoran versi:
N.x.K
, di manaN
danK
bilangan bulat. Contoh:1.x.0
,5.x.1
,10.x.33
. Digunakan untuk build menengah .N.M.K
, di manaN
,M
danK
bilangan bulat. Contoh:1.0.0
,5.3.1
,10.22.33
. Digunakan untuk rilis .N.x.x
, di manaN
bilangan bulat. Contoh:1.x.x
. Digunakan untuk cabang pendukung .N.M.x
, di manaN
danM
bilangan bulat. Contoh:1.0.x
. Digunakan untuk cabang rilis .Berikut adalah gambar untuk ilustrasi sederhana dari pendekatan penomoran versi:
PA
berarti pra-alfaA
berarti alfaB
berarti betaAR
berarti alfa-rilisBR
berarti beta-releaseRC
berarti kandidat rilisST
berarti stabilKeuntungan dari pendekatan penomoran versi tersebut adalah sebagai berikut:
N.x.K
) dan release (N.M.K
). Rilis berarti perangkat lunak dengan nomor versi lengkap (N.M.K
) telah melalui semacam proses manajemen kualitas dalam perusahaan / organisasi / tim pemasok.Ada juga diagram yang lebih kompleks yang menggambarkan pendekatan versi secara terperinci. Anda juga mungkin menemukan slide presentasi bermanfaat yang menjelaskan transisi ke pendekatan versi dan aplikasi SCMFViz yang menggambarkan prinsip-prinsip dasar pendekatan penomoran versi. Slide presentasi juga menjelaskan mengapa penting untuk tetap berpegang pada pendekatan versi yang sama sepanjang masa proyek perangkat lunak.
Secara pribadi, sikap saya terhadap penggunaan versi tanggal dan bukan nomor versi asli mengasumsikan bahwa pengembang perangkat lunak dengan versi tanggal:
N
dalamN.M.K
) bertanggung jawab untuk solusi arsitektur dan prinsip yang mendasari aplikasi. Nomor versi utamaN
harus diubah sesuai dengan perubahan arsitektur atau perubahan ide-ide utama dan prinsip kerja / fungsinya.Pendekatan ini mungkin tampak sedikit kontroversial, tetapi saya percaya ini adalah cara paling mudah untuk memberikan nomor versi perangkat lunak yang sesuai.
sumber
Untuk setiap versi utama yang Anda rilis, tidak jarang memiliki versi kerja yang Anda sebut internal. Misalnya, pada pekerjaan terakhir saya, kami merujuk ke versi utama dengan konvensi penamaan yang terinspirasi Ubuntu berikut:
[kondisi sakit-sakitan] [nama binatang aliteratif]
Yang memberi nama seperti " Limp Lamprey ", " Wounded Wombat " dan " Asthmatic Anteater ".
Pastikan kecuali itu nama yang benar-benar keren agar tidak bocor ke pelanggan Anda.
sumber
Generation.Version.Revision.Build (9.99.999.9999)
Generasi jarang berubah. Hanya menghidupkan produk: DOS -> Windows, rekayasa ulang lengkap.
Versi untuk perubahan besar yang tidak kompatibel, fungsionalitas baru, perubahan pada beberapa paradigma spesifik pada perangkat lunak, dll.
Revisi sering dilakukan (fitur kecil dan perbaikan bug).
Build adalah informasi internal.
sumber
git describe
memberikan ekstensi yang bagus untuk konvensi penomoran apa pun yang Anda pilih. Cukup mudah untuk menyematkan ini dalam proses pembuatan / pengemasan / penyebaran Anda.Misalkan Anda memberi nama ABC versi rilis yang ditandai (major.minor.maintenance).
git describe
pada komit yang diberikan akan menemukan leluhur yang diberi tag terbaru dari komit, kemudian tempel pada jumlah komit sejak saat itu, dan SHA1 disingkat dari komit:Jika Anda benar-benar di salah satu versi, tentu saja, Anda hanya akan mendapatkan tag (1.2.3).
Ini memiliki manfaat yang bagus untuk memberi tahu Anda secara persis sumber apa yang Anda buat, sementara tidak harus setiap nomor membuat sendiri.
sumber
Major.Minor.Public (build) [alpha / beta / trial], seperti "4.08c (1290)"
sumber
Saya lebih suka nomor versi yang memberikan makna semantik. Selama Anda dapat menggunakan nomor versi untuk melacak bug yang dilaporkan dengan versi tertentu untuk perubahan yang terjadi pada kode sumber (dan dalam sistem manajemen aktivitas Anda) maka Anda mungkin menggunakan metode yang tepat.
Saya menggunakan NET. Jadi saya terjebak dengan sistem penomoran versi. NET tapi saya mencoba untuk memberikan makna semantik untuk angka-angka begitu
major.minor.build.revision
Kami selalu memastikan bahwa nomor versi terlihat dengan cara tertentu (dengan program berbasis konsol batch kami yang dicetak ke konsol dan file log, dengan aplikasi web pada bilah menu di bagian atas biasanya)
Dengan cara ini jika klien melaporkan masalah, kami dapat menggunakan nomor versi untuk melacak jika mereka menggunakan versi terbaru dan berapa banyak masalah yang kami miliki dengan versi tertentu.
Ini semua tentang keterlacakan!
sumber
Kami menggunakan Major.Minor.Build # .YYMMDD [suffix], karena kami biasanya hanya melakukan satu build produksi pada hari tertentu (tetapi menggunakan ab / c / d akhiran jika ada lebih dari satu) dan YYMMDD memberikan pengguna / pelanggan / manajemen indikasi umur bangunan, di mana 6.3.1389 tidak.
Angka-angka utama bertambah dengan fitur produk yang signifikan (berbayar).
Angka minor bertambah dengan perbaikan / peningkatan (pembaruan gratis).
Bangun selalu meningkat; tidak semua membuat kapal, jadi itu bukan perkembangan linier.
sumber
Nomor versi harus memiliki informasi yang cukup sehingga Anda terhindar dari konflik dan memperbaiki bug dalam masalah tipe rilis yang salah, tetapi tidak boleh menyampaikan informasi tambahan yang tidak relevan.
Misalnya jika Anda menggunakan tanggal pelanggan dapat mengatakan bahwa mereka memiliki versi yang lebih lama, dan tambalan terhadap versi lama dapat memiliki versi yang membingungkan.
Saya pribadi suka versi semantik :
Major
.Minor
.Patch
Patch
peningkatan setiap kali Anda merilis bangunan.Minor
kenaikan setiap kali fungsi yang kompatibel mundur ditambahkan.Major
bertambah ketika fungsionalitas baru tidak kompatibel.Major
== 0 Anda berada di alfa / pra-rilis.Major
> = 1 adalah rilis publik Anda.1.5.3
dapat mereka kirim secara sekilas bahwa mereka dapat memutakhirkan1.5.4
untuk mendapatkan tambalan, itu1.6.0
akan menambah fungsionalitas dan bahwa mereka tidak seharusnya memutakhirkan ke2.0.0
(setidaknya tanpa menangani perubahan).sumber
X.Y.Z
adalah nomor versi internal kami.X.Y
adalah nomor versi publik, nomor yang memiliki arti bagi klien kami. Ketika sebuahX.Y.Z
versi menjadi publik, tidak akan pernah adaX.Y.(Z+1)
versi: versi publik selalu yang terakhir dari seri.X
bertambah ketika versi utama dirilis.Y
digunakan untuk cabang pemeliharaan dari rilis utama tersebut, hanya untuk perbaikan bug.Z
digunakan secara internal, dan tidak memiliki arti tetap. Sampai sekarang, saya membuatZ
versi baru ketika saya berpikir bahwa aplikasi tersebut memiliki serangkaian fitur yang menarik untuk ditunjukkan kepada non pengembang, dan relatif stabil. Dengan cara ini, saya dapat menunjukkan demo dari "versi bagus yang terakhir diketahui" dari aplikasi ketika seseorang bertanya. Dalam waktu dekat, saya berencana untuk menggunakanZ
versi nomor untuk memberi nama "target" fitur, di bugtracker kami.Sebagai catatan tambahan, kami menggunakan maven (dengan
release
perintah) untuk menambah nomor versi. Jadi, adaX.Y.Z-SNAPSHOT
versi juga (yang menunjukkan versi antaraX.Y.(Z-1)
danX.Y.Z
).sumber