it-swarm-id.com

Apa sebenarnya nomor build di MAJOR.MINOR.BUILDNUMBER.REVISION

Apa yang saya pikirkan tentang Bilangan Bangun adalah bahwa setiap kali bangunan malam yang baru dibuat, BUILDNUMBER baru dibuat dan ditugaskan untuk bangunan itu. Jadi untuk aplikasi versi 7.0 saya build malam akan 7.0.1, 7.0.2 dan seterusnya. Benarkah begitu? Lalu apa gunanya REVISION setelah nomor build? Atau apakah bagian REVISION bertambah setelah setiap malam membangun? Saya agak bingung di sini ... apakah kita menyebut setiap bangunan malam sebagai [~ # ~] build [~ # ~] ?

Format disebutkan di sini: AssemblyVersion - MSDN

56
A9S6

Saya belum pernah melihatnya ditulis dalam bentuk itu. Di mana saya bekerja, kami menggunakan formulir MAJOR.MINOR.REVISION.BUILDNUMBER, di mana MAJOR adalah rilis utama (biasanya banyak fitur baru atau perubahan pada UI atau OS yang mendasarinya), MINOR adalah rilis minor (mungkin beberapa fitur baru) di rilis utama sebelumnya, REVISION biasanya merupakan perbaikan untuk rilis minor sebelumnya (tidak ada fungsi baru), dan BUILDNUMBER ditambahkan untuk setiap versi revisi terbaru.

Misalnya, revisi dapat dirilis ke QA (kontrol kualitas), dan mereka kembali dengan masalah yang memerlukan perubahan. Bug akan diperbaiki, dan dilepaskan kembali ke QA dengan nomor REVISI yang sama, tetapi BUILDNUMBER yang bertambah.

58
tcrosley

Seluruh kebingungan berasal dari semantik yang berbeda yang digunakan MS untuk "Build number" dan terutama "Revision". Istilah itu hanya bermakna berbeda.

Kebanyakan orang (termasuk saya sendiri) menggunakan skema penomoran versi semantik di mana Anda mendapatkan angka BUILD yang lebih tinggi setiap kali Anda harus membuat bangunan baru dengan alasan apa pun. Bagi kami, perbaikan terbaru dianggap hanya perubahan kode lainnya, dan bagian BUILD meningkat secara otomatis setiap kali CI dijalankan. Modul dengan MAJ.MIN.REV yang sama dianggap dapat dipertukarkan, dan BUILD memberi tahu Anda yang mana yang terbaru.

Menambah REVISION, bagaimanapun, menunjukkan cabang rilis permanen baru, itu sebabnya kami menempatkannya sebelum BUILD. Kelemahan dari pendekatan itu adalah, bahwa kita mungkin mendapatkan urutan peristiwa berikut:

  • commit number 4711: Alice menambahkan fitur A
  • CI menghasilkan build 1.2.3.100
  • commit number 4712: Fitur yang dimodifikasi Bob B
  • commit number 4713: Alice memperbaiki fitur A ("perbaikan terbaru")
  • CI menghasilkan build 1.2.3.101

major.minor.revision.build

Seperti yang Anda lihat, perbaikan terbaru bukan satu-satunya perubahan yang ada di build berikutnya, juga modifikasi Bob menjadi bagian dari build itu. Jika Anda ingin menstabilkan cabang saat ini, Anda mungkin mengalami masalah karena Anda tidak pernah dapat memastikan apakah Bob hanya menambahkan banyak bug.

MS menggunakan kedua istilah ini secara berbeda. Nomor BUILD tidak secara otomatis bertambah, melainkan dapat dianggap sebagai jenis cabang rilis, untuk membekukan kode yang digunakan untuk versi kode tertentu. REVISION menunjukkan perubahan "panas" tambahan yang diterapkan pada cabang BUILD itu. Maka urutannya adalah sebagai berikut:

  • commit number 4711: Alice menambahkan fitur A ke trunk/master
  • Carl membuat build branch 1.2.100
  • CI menghasilkan build 1.2.100.0
  • commit number 4712: Bob memodifikasi fitur B di trunk/master
  • commit number 4713: Alice memperbaiki fitur A di 1.2.100 cabang
  • CI menghasilkan build 1.2.100.1

major.minor.build.revision

Istilah REVISION dapat merujuk

  • a product revision (that's how most people use it)
  • revisi bangunan harian tertentu (itulah yang dilakukan MS)

Perbedaan utama antara kedua proses adalah, apakah Anda ingin atau tidak kemampuan untuk menerapkan perbaikan terbaru untuk membangun CI dan dengan demikian, pada titik mana dalam proses cabang dibuat. Aspek ini menjadi penting ketika Anda ingin dapat memilih bangunan tertentu kapan saja setelah semua tes berhasil dan mempromosikan versi itu ke rilis resmi produk Anda berikutnya.

Dalam kasus kami, alat CI membuat tag repositori, jadi kami selalu memiliki informasi yang diperlukan siap digunakan, bila diperlukan. Dengan SVN menjadi lebih sederhana, karena tag dan cabang diimplementasikan persis dengan cara yang sama - tag tidak lebih dari cabang yang berada di bawah /tags.

Lihat juga

Dari bagian FAQ di strategi percabangan TFS :

Di cabang apa saya harus memperbaiki tiket P1 (hotfix)?

  • P1 harus diperbaiki di cabang yang paling dekat dengan basis kode yang berjalan di Produksi. Dalam hal ini P1 harus diperbaiki di cabang Prod. Dengan menerapkan perbaikan di cabang lain dan meluncurkan perubahan pada produksi Anda berisiko melepaskan kode setengah jadi atau belum teruji dari iterasi berikutnya.

  • Sekarang Anda dapat berdebat jika aman untuk bekerja secara langsung melawan cabang Prod, pikirkan lagi, P1 yang membutuhkan perhatian segera seharusnya tidak menjadi masalah mendasar dalam sistem. Dalam hal ini merupakan masalah mendasar, ia harus ditambahkan ke dalam simpanan Produk karena mungkin memerlukan analisis dan diskusi lebih lanjut dengan pelanggan.

Bacaan lain yang bagus adalah panduan percabangan TFS

20
JensG

Microsoft menjelaskan tujuan setiap komponen nomor versi .NET dalam dokumentasi MSDN mereka untuk kelas Version. Inilah bagian yang relevan:

major.minor [.build [.revision]]

Komponen yang digunakan oleh konvensi adalah sebagai berikut:

Mayor: Sidang dengan nama yang sama tetapi versi utama yang berbeda tidak dapat dipertukarkan. Nomor versi yang lebih tinggi mungkin menunjukkan penulisan ulang utama suatu produk di mana kompatibilitas ke belakang tidak dapat diasumsikan.

Kecil: Jika nama dan nomor versi utama pada dua majelis adalah sama, tetapi nomor versi minor berbeda, ini menunjukkan peningkatan yang signifikan dengan maksud kompatibilitas mundur. Nomor versi minor yang lebih tinggi ini mungkin menunjukkan pelepasan poin suatu produk atau versi baru produk yang sepenuhnya kompatibel dengan produk.

Bangun: Perbedaan dalam nomor bentukan mewakili kompilasi ulang dari sumber yang sama. Nomor build yang berbeda dapat digunakan ketika prosesor, platform, atau kompiler berubah.

Revisi: Sidang dengan nama yang sama, nomor versi utama, dan minor tetapi revisi yang berbeda dimaksudkan untuk sepenuhnya dapat dipertukarkan. Nomor revisi yang lebih tinggi dapat digunakan dalam membangun yang memperbaiki lubang keamanan di Majelis yang dirilis sebelumnya.

http://msdn.Microsoft.com/en-us/library/system.version.aspx

17
Cole Campbell

Setidaknya ada beberapa hal berbeda yang dapat saya bayangkan referensi build number:

  1. Versi kontrol sumber yang dirilis. Misalnya jika ada rilis revisi # 12345, ini dapat dilacak dengan menjadikannya nomor build dan jika ditambal, revisi dapat naik karena bukan fungsi baru yang akan meningkatkan versi utama atau kecil dan nomor build harus diingat jika seseorang ingin menjalankan build itu lagi.

  2. Pengidentifikasi server integrasi berkelanjutan. Dalam hal ini, server CI dapat memberi nomor pada setiap build yang dijalankannya dan dengan demikian nomor build adalah apa yang berhasil didapat dan bagian revisi tidak diperlukan dalam skenario ini.

Mungkin ada orang lain yang saya tidak tahu, tetapi ini adalah yang besar yang saya tahu ketika datang ke nomor pada basis kode.

4
JB King

Nomor build biasanya bertambah di setiap build sehingga unik.

Demi kesederhanaan, beberapa reset nomor build setiap kali nomor UTAMA atau MINOR bertemu.

Sebagian besar mesin Integrasi Berkelanjutan memungkinkan untuk nomor build unik yang di-autogenerasi.

3
user1249

Revisi dapat digunakan untuk tambalan bangunan. Katakanlah bahwa 2 tim mengerjakan suatu produk.

Tim 1 adalah tim pengembangan utama dan menghasilkan pembangunan malam hari dengan skema versi 1.0.X.0 berikut, di mana X bertambah. Sekarang mereka berada di build 1.0.50.0 Team 2 mengambil build dari waktu ke waktu. Katakanlah mereka mengambil build dari minggu lalu yaitu 1.0.43.0 dan mulai menggunakannya. Tim 1 maju ke 1.0.51.0 ketika tim 2 menemukan masalah di 1.0.43.0.

Sekarang tim 1 akan mengambil bangunan itu (43), memperbaiki masalah dan memberikan tim 2 dengan membangun 1.0.43.1. Perbaikan mungkin juga disebarkan di build utama, sehingga perubahan akan muncul di 1.0.52.0.

Semoga ini jelas dan bermanfaat.

* Revisi berguna ketika tidak semua orang yang terlibat dalam proyek menggunakan build yang sama dan Anda perlu menambal build tertentu.

2

Biarkan saya katakan bagaimana saya melihat dan menggunakannya ....

Versi ProgramName major.minor.build.revision

major: Bagi saya adalah proyek yang sedang saya kerjakan. Jumlahnya tidak akan berubah sampai saya memulai proyek baru dengan nama program yang sama. Ini berarti saya benar-benar akan menulis program baru dengan jenis kelamin yang sama (contoh: akses v1 - akses v-2 - akses v-3 * semua program yang sama tetapi sepenuhnya ditulis ulang).

minor: Ini berarti saya menambahkan fungsionalitas untuk proyek yang diterbitkan saat ini. Misalnya mungkin saya menambahkan kemampuan untuk mencetak tanda terima atau menambahkan kemampuan untuk mengimpor gambar. Pada dasarnya fungsi tambahan yang ingin saya tambahkan sekarang dan tidak menunggu rilis besar berikutnya untuk melakukannya.

build: Ini saya gunakan untuk menunjukkan perubahan sangat kecil dalam versi major.minor yang diterbitkan. Ini bisa berupa perubahan tata letak, skema warna, dll.

revisi: Ini saya gunakan untuk menunjukkan perbaikan bug pada may.minor.build yang diterbitkan saat ini - Ada saat-saat di mana saya tidak melanjutkan proyek saat ini dan bug muncul. Bug ini perlu diperbaiki dan dipublikasikan. Itu hanya berarti saya memperbaiki apa yang sudah saya terbitkan agar berfungsi dengan benar. Saya juga akan menggunakan ini jika saya mengerjakan build baru, tambahan baru atau memulai versi utama baru. Versi yang diterbitkan jelas perlu ditambal sementara kami menunggu rilis mayor, minor, atau build berikutnya.

Jadi dengan cara ini proyek yang sudah jadi atau macet masih bisa diperbaiki dan dapat digunakan sampai rilis berikutnya diterbitkan.

Saya harap ini memberi seseorang pemahaman yang lebih baik tentang bagaimana jenis versi ini akan (atau seharusnya) bekerja. Bagi saya itu adalah satu-satunya definisi dan praktik yang membuat semua jenis akal nyata ketika menggunakan jenis versi ini.

2
Richard Rindom

Saya hanya pernah melihat nomor build sebagai nomor terakhir dalam ID rilis. Saya tidak yakin bagaimana Anda membuat revisi ke nomor build. Saya kira jika Anda mengubah beberapa sumber daya tidak dibangun (ikon, skrip DB, dll), mungkin, tetapi sebagian besar proyek yang saya kerjakan baru-baru ini memiliki semua hal di bawah kontrol versi juga, sehingga proses pembangunan mengambilnya ketika membuat penginstal/rilis. Saya suka nomor build bertanda waktu, meskipun tidak cukup seperti yang dijelaskan oleh @vid (saya suka major.minor.revision.HHMM). Namun, tempat saya bekerja, kami hanya menggunakan nomor urut yang dihasilkan server build kami.

1
TMN

Seperti jkohlhepp, kami menggunakan bagian ketiga dari versi untuk menunjukkan nomor revisi di Subversion dan yang keempat untuk menunjukkan nomor build dari server integrasi berkelanjutan kami (Jenkins untuk kami). Ini memberi kita beberapa manfaat - memiliki nomor versi yang ditetapkan oleh server CI kami menghapus langkah manual yang jika tidak sengaja dapat terlewatkan; mudah untuk memeriksa bahwa pengembang belum melakukan rilis nakal dari PC pengembangan mereka (yang akan menghasilkan angka-angka ini menjadi nol); dan itu memungkinkan kita untuk mengikat setiap perangkat lunak kembali ke kedua kode yang dihasilkannya dan pekerjaan CI yang membangunnya, hanya dengan melihat nomor versi - yang kadang-kadang kita temukan sangat berguna.

1
Jon Lawson

Apa pun yang Anda inginkan. Saya cenderung menggunakan year.month.day.hhmm untuk major.minor.build.revision. Jika saya menghasilkan lebih dari satu menit, ada yang salah. Anda bisa menggunakan kenaikan sederhana, atau saya telah melihat beberapa generator rumit untuk mereka. Apa yang diinginkan yang Anda . Yang perlu mereka lakukan adalah membuatnya sehingga Anda sampai ke sumber yang digunakan untuk membuat output itu, jadi apa pun yang memungkinkan Anda untuk melakukan itu.

0
BlackICE

Dua digit terakhir adalah jumlah build total

1.01.2.1234

nomor build adalah 2.1234 namun kebanyakan orang hanya akan menggunakan 1.234 karena 2 bagian tidak sering berubah.

0
lance lyons

Tim kami menggunakan angka ketiga (revisi) sebagai nomor revisi dari repositori Subversion. Kami menggunakan angka keempat (build) sebagai nomor build dari server integrasi berkelanjutan TeamCity kami yang benar-benar membuat build. TeamCity membuat file AssemblyInfo baru dengan #s di dalamnya selama proses pembangunan.

0
RationalGeek