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 REVISI 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 ?
Formatnya disebutkan di sini: AssemblyVersion - MSDN
builds
versioning
A9S6
sumber
sumber
Jawaban:
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 besar 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.
sumber
Seluruh kebingungan berasal dari semantik berbeda yang digunakan MS untuk "Build number" dan terutama "Revision". Istilah itu hanya berarti hal yang berbeda.
Sebagian besar orang (termasuk saya) menggunakan skema penomoran versi semantik di mana Anda hanya mendapatkan nomor 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:
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:
1.2.100
1.2.100
cabangIstilah REVISION dapat merujuk
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 :
Bacaan bagus lainnya adalah panduan percabangan TFS
sumber
Microsoft menjelaskan tujuan setiap komponen nomor versi .NET dalam dokumentasi MSDN mereka untuk
Version
kelas. Inilah bagian yang relevan:http://msdn.microsoft.com/en-us/library/system.version.aspx
sumber
Build
sebagairecompilation of the same source
tampaknya menjadi poin penting yang terlewatkan. Jika itu adalah perubahan kode (yang tidak memerlukan peningkatan Mayor / Minor baru) makaRevision
harus juga diubah.Setidaknya ada beberapa hal berbeda yang dapat saya bayangkan referensi build number:
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.
Pengidentifikasi server integrasi berkelanjutan. Dalam kasus 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.
sumber
Nomor build biasanya bertambah di setiap build sehingga unik.
Demi kesederhanaan, beberapa set ulang nomor build setiap kali nomor UTAMA atau MINOR bertemu.
Sebagian besar mesin Integrasi Berkelanjutan memungkinkan untuk nomor bentukan unik yang dibuat secara otomatis.
sumber
Revisi dapat digunakan untuk tambalan bangunan. Katakanlah bahwa 2 tim mengerjakan suatu produk.
Tim 1 adalah tim pengembangan utama dan menghasilkan bangunan malam 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 menyediakan 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.
sumber
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 yang 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 memajukan 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 sedang 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.
sumber
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 oleh server build kami.
sumber
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 kode yang dihasilkan dan pekerjaan CI yang membangunnya, hanya dengan melihat nomor versi - yang kadang-kadang kita temukan sangat berguna.
sumber
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 Anda inginkan? 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.
sumber
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.
sumber
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 menciptakan build. TeamCity membuat file AssemblyInfo baru dengan #s di dalamnya selama proses build.
sumber