it-swarm-id.com

Apa "konvensi penamaan versi" yang Anda gunakan?

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 bagi pelanggan, nomor versi 3 digit yang 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.
111
rjstelling

Saya menemukan diri saya jarang setuju sepenuhnya dengan Jeff Atwood, tetapi saya cenderung untuk mengikuti pendapatnya tentang konvensi penomoran versi NET. .

(Versi utama). (Versi kecil). (Nomor revisi). (Nomor pembuatan)

Lebih sering daripada tidak, untuk proyek pribadi, saya menemukan ini berlebihan. Beberapa kali di mana saya telah bekerja pada proyek-proyek besar seperti mesin pencari di C # Saya terjebak pada konvensi ini dan telah dapat menggunakannya sebagai pelacak internal secara efektif.

47
Mike B

Versi Semantik ( http://semver.org/ ) perlu 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.

90
M. Dudley

Saya tidak menggunakannya tetapi saya telah melihatnya dan ini adalah struktur yang menarik:

Year.Month.Day.Build

Cukup dijelaskan.

33
Maniero

Saya mencoba menggunakan RubyGems Rational Versioning policy di mana:

  • Nomor versi utama bertambah ketika kompatibilitas biner rusak
  • Nomor versi minor bertambah ketika fungsionalitas baru ditambahkan
  • Perubahan nomor pembuatan untuk perbaikan bug.
14
Ken Bloom

Berikut adalah pendekatan yang sangat bagus untuk penomoran versi:

  • N.x.K, di mana N dan K adalah bilangan bulat. Contoh: 1.x.0, 5.x.1, 10.x.33. Digunakan untuk build menengah.
  • N.M.K, di mana N, M dan K adalah bilangan bulat. Contoh: 1.0.0, 5.3.1, 10.22.33. Digunakan untuk rilis.
  • N.x.x, di mana N adalah bilangan bulat. Contoh: 1.x.x. Digunakan untuk cabang dukungan.
  • N.M.x, di mana N dan M adalah bilangan bulat. Contoh: 1.0.x. Digunakan untuk rilis cabang.

Berikut adalah gambar untuk ilustrasi sederhana dari pendekatan penomoran versi:

Agile version numbering

PA berarti pra-alfa A berarti alpha B berarti beta AR berarti pelepasan alpha BR berarti rilis beta RC berarti rilis kandidat ST berarti stable

Keuntungan dari pendekatan penomoran versi tersebut adalah sebagai berikut:

  • Ini mewakili spesifikasi siklus pengembangan perangkat lunak yang gesit.
  • Ini memperhitungkan spesifik akun struktur repositori kode sumber.
  • Ini adalah penjelasan sendiri untuk mereka yang terbiasa dengan pola. Setiap pola mewakili artefak yang berbeda. Pola seperti itu dapat dengan mudah diurai dan digunakan untuk tujuan lain, seperti pelacakan masalah.
  • Pola pola versi, yang dasar untuk pendekatan versi yang dijelaskan dapat digunakan untuk metrik pengumpulan dan perencanaan.
  • Ini difokuskan pada konsep jatuh tempo dan tingkat kualitas. Seringkali nomor versi seperti 1.0.0 ditugaskan tanpa banyak keharusan (ketika perangkat lunak berada di alpha yang dalam). Pendekatan penomoran versi yang disajikan memungkinkan untuk menetapkan beberapa tingkat kematangan. Dalam kasus paling sederhana, ia hanya memiliki dua level: build menengah (N.x.K) dan lepaskan (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.
  • Ini adalah bukti sifat lincah pengembangan dan pengujian.
  • Mendorong pendekatan modular ke struktur dan arsitektur perangkat lunak.

Ada juga yang lebih kompleks diagram mewakili pendekatan versi secara detail. Juga Anda mungkin menemukan berguna slide presentasi menggambarkan transisi ke pendekatan versi dan SCMFViz aplikasi 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 alih-alih angka versi asli mengasumsikan bahwa pengembang perangkat lunak dengan versi tanggal:

  • Tidak tahu apa-apa tentang siklus pengembangan perangkat lunak . Pengembangan biasanya gesit dan berulang. Pendekatan penomoran versi harus mewakili sifat berulang dari proses pengembangan perangkat lunak.
  • Jangan pedulikan kualitas perangkat lunak . Kontrol kualitas dan jaminan gesit dan berulang. Sama seperti pengembangan. Dan nomor versi harus menjadi bukti sifat lincah dan berulang dari pengembangan dan kontrol kualitas/jaminan.
  • Jangan pedulikan arsitektur atau ide dari aplikasi mereka. Nomor versi utama (N di N.M.K) bertanggung jawab atas solusi arsitektur dan prinsip yang mendasari aplikasi. Nomor versi utama N harus diubah sesuai dengan perubahan arsitektur atau perubahan gagasan dan prinsip utama kerja/fungsinya.
  • Tidak memiliki kendali atas basis kode mereka . Mungkin hanya ada satu cabang (trunk) dan digunakan untuk semuanya. Yang secara pribadi menurut saya tidak benar karena mendorong basis kode untuk menjadi satu tempat sampah besar.

Pendekatan ini mungkin tampak sedikit kontroversial, tetapi saya percaya ini adalah cara paling mudah untuk memberikan nomor versi perangkat lunak yang sesuai.

10
altern

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] [nama hewan 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.

8
Jesse C. Slicer

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, fungsi baru, perubahan pada beberapa paradigma spesifik pada perangkat lunak, dll.

Revisi sering dilakukan (fitur kecil dan perbaikan bug).

Build adalah informasi internal.

7
Maniero

git describe memberikan ekstensi Nice ke konvensi penomoran apa pun yang Anda pilih. Cukup mudah untuk menyematkan ini dalam proses pembuatan/pengemasan/penyebaran Anda.

Misalkan Anda memberi nama versi rilis yang diberi tag A.B.C (major.minor.maintenance). git describe pada komit yang diberikan akan menemukan leluhur yang diberi tag yang terbaru dari komit, kemudian menempelkan jumlah komit sejak saat itu, dan SHA1 disingkat dari komit:

1.2.3-164-g6f10c

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 tepatnya sumber apa yang Anda buat, tanpa harus menghitung setiap bangunan.

6
Cascabel

Saya lebih suka nomor versi yang memberikan makna semantik. Selama Anda dapat menggunakan nomor versi untuk melacak bug yang dilaporkan dengan versi tertentu terhadap 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 demikian dengan

major.minor.build.revision

  • major = (hingga proyek)
  • minor = (hingga proyek)
  • build = build number dari Hudson (Anda bisa menggunakan TeamCity atau TeamBuild, dll. di sini)
  • revisi = Subversi atau revisi Bazaar (tergantung pada proyek dan apa penggunaannya)

Kami selalu memastikan bahwa nomor versi terlihat dalam beberapa cara (dengan program berbasis batch 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!

2
Jeffrey Cameron

Major.Minor.Public (build) [alpha/beta/trial], seperti "4.08c (1290)"

  • Dengan Major menjadi nomor versi utama (1, 2, 3 ...)
  • Minor menjadi versi minor 2 digit (01, 02, 03 ...). Biasanya puluhan digit bertambah ketika fungsi baru yang signifikan ditambahkan, yang hanya untuk perbaikan bug.
  • Publik menjadi rilis publik bangunan (a, b, c, d, e), yang seringkali berbeda dari versi minor jika versi minor tidak pernah dirilis sebagai pembaruan publik
  • build, menjadi nomor build aktual yang dicatat oleh kompiler.
  • dengan TRIAL, ALPHA, BETA X, atau RC X ditambahkan untuk kasus-kasus khusus.
2
GrandmasterB

Kami menggunakan Major.Minor.Build # .YYMMDD [suffix], karena kami biasanya hanya melakukan satu build produksi pada hari tertentu (tetapi menggunakan ab/c/d suffix jika ada lebih dari satu) dan YYMMDD memberi pengguna/pelanggan/manajemen indikasi usia 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.

1
JBRWilkinson
 1.0.0 
 | 
 1.0.1 
 | 
 (Publik 1.0) 1.0.2 ----- 
 |\
 2.0.0 1.1.0 
 | | 
 2.0.1 1.1.1 (publik 1.1) 
 | 
 (Public 2.0) 2.0.2 ----- 
 |\
 3.0.0 2.1.0 
 | 
 2.1.1 (publik 2.1) 
 | 
 2.2.0 
 | 
 2.2.1 

X.Y.Z Adalah nomor versi internal kami. X.Y Adalah nomor versi publik, nomor yang memiliki arti bagi klien kami. Ketika versi X.Y.Z Menjadi publik, tidak akan pernah ada versi X.Y.(Z+1): versi publik selalu yang terakhir dari seri tersebut.

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 membuat versi Z baru ketika saya berpikir bahwa aplikasi tersebut memiliki serangkaian fitur yang menarik untuk ditampilkan kepada non pengembang, dan relatif stabil. Dengan cara ini, saya dapat menampilkan demo "versi bagus yang diketahui terakhir" dari aplikasi ketika seseorang bertanya. Dalam waktu dekat, saya berencana untuk menggunakan versi nomor Z untuk memberi nama "target" fitur, di bugtracker kami.

Sebagai catatan tambahan, kami menggunakan maven (dengan perintah release) untuk menambah nomor versi. Jadi, ada juga versi X.Y.Z-SNAPSHOT (Yang menunjukkan versi apa pun antara X.Y.(Z-1) dan X.Y.Z).

0
barjak