Apakah Anda memeriksa bin atau folder debug (dan lain-lain) ke TFS Anda?

11

Pertanyaan cepat tentang TFS - Apakah kalian masuk ke folder bin / debug ke TFS? (jika demikian, mengapa?) Karena konten folder tersebut dihasilkan secara dinamis, lebih baik membiarkannya keluar sehingga programmer tidak akan mengalami masalah read-only?

aggietech
sumber
Anda mungkin tertarik dengan proposal pertukaran tumpukan ini . Sudah hampir siap untuk memulai beta, hanya perlu beberapa lagi.
greatwolf

Jawaban:

27

Sebagai aturan umum, kontrol sumber paling baik digunakan untuk sumber saja, dan file yang dihasilkan bukan sumber.

Ada beberapa pengecualian. Terkadang (menggunakan Visual Studio) Anda mungkin ingin menyimpan file .pdb untuk membaca minidumps. Terkadang Anda tidak dapat menduplikasi rantai alat, sehingga Anda tidak dapat membuat ulang file yang dihasilkan secara akurat. Dalam kasus ini, Anda terutama tertarik melakukan ini untuk perangkat lunak yang dirilis, bukan untuk setiap perubahan VCS, dan dalam hal apa pun ini dapat dengan mudah berada di folder berversi. (Lagi pula, ini biasanya file biner, dan tidak memiliki perubahan yang dapat dipahami dari satu versi ke versi lain, dan tidak mendapatkan banyak manfaat dari berada di VCS.)

David Thornley
sumber
6
Jika Anda tertarik untuk menjaga simbol debug, lebih baik Anda menyiapkan server simbol . Jika Anda melakukannya dengan benar (dengan pengindeksan sumber), men-debug minidump terlebih dahulu akan menarik simbol dari server simbol Anda dan kemudian sumber yang relevan dari kontrol sumber Anda ... Jika Anda hanya memeriksa dan menandai setiap bangunan, Anda harus lakukan ini secara manual.
Shog9
8

Jawaban sederhana? Tidak. Jangan lakukan itu! Saya tidak dapat memikirkan banyak alasan untuk tidak melakukannya, tetapi tidak ada alasan mengapa Anda menginginkannya.

Satu-satunya waktu saya bisa berpikir Anda akan check in dll adalah jika itu dari perpustakaan pihak ketiga yang Anda tidak harapkan setiap pengembang untuk menginstal dibangun. Tapi meski begitu, itu tidak terletak di folder bin.

Oleh karena itu saya bekerja di satu perusahaan yang mengharuskan setiap paket penempatan dimasukkan ke dalam kendali sumber, tetapi itu adalah agar kami dapat melacak berbagai build yang kami berikan kepada klien kami dan dapat dengan mudah memutar kembali jika perlu.

Tyanna
sumber
1
Alasan utama untuk tidak: Berapa banyak penyimpanan terabyte yang Anda inginkan untuk dikonsumsi sumber kendali Anda?
EKW
1
@EKW C # misalnya secara historis tidak menghasilkan binari identik dari sumber yang sama. Itu mungkin berbeda sekarang dengan .NET Core tetapi ini adalah salah satu alasan untuk menjaga biner yang dihasilkan untuk build yang dirilis misalnya. Saya tidak akan menempatkan mereka dalam kontrol sumber. Itu bukan alat yang tepat untuk pekerjaan itu.
Shiv
5

Kami tidak memeriksa dalam folder bin ke TFS. Seperti yang mungkin Anda perhatikan, jika Anda melakukannya, setiap kali pengembang membangun solusi, mereka akan memeriksa folder tempat sampah. Tidak baik. Namun ada perpustakaan yang dibutuhkan proyek untuk dikompilasi dan dijalankan, dan aturan kami adalah bahwa setiap proyek harus dapat dibuka dari kontrol sumber, dan itu harus dikompilasi dan dijalankan. Jadi yang kita lakukan adalah membuat folder "BinRef" untuk setiap DLL yang harus dirujuk oleh proyek, dan membuat Referensi Proyek untuk salinan di folder BinRef. Folder BinRef yang diperiksa untuk TFS.

Keuntungan lain dari pendekatan ini adalah bahwa BinRef selalu berada pada level root dari proyek web. Jika proyek saya hidup C:\Projects\Marcie\SomeProjectCategory\ProjectAdan saya membuat referensi ke DLL yang duduk C:\DLLsThatILike, referensi akan terlihat seperti

\..\..\..\NiceThing.dll

. Anda dapat menyimpan file proyek Anda C:\ProjectAyang berarti bahwa referensi proyek ke NiceThing akan meledak di mesin Anda. Mudah-mudahan orang tidak melakukan referensi dengan cara ini, tetapi saya telah melihatnya terjadi.

Marcie
sumber
2

Kami memeriksa isi direktori bin sebagai bagian dari proses Permintaan Perubahan kami. Untuk menghindari masalah baca-saja, kami menyalin konten ke folder terpisah dan memeriksanya di sana. Kebijakan perusahaan kami mengharuskan semua biner yang menuju produksi diperiksa secara terpisah dari sumbernya. Ini bukan solusi terbaik tetapi berfungsi dan itu memberi kita file yang tepat yang sedang dalam produksi.

Walter
sumber
2
Pada awalnya saya akan melewati jawaban ini, lalu saya memikirkannya sedikit lagi. Di perusahaan saya, kami tidak memiliki rencana Pemulihan Bencana (terlalu lama untuk dibahas). Ini mungkin berguna jika harus mulai dari awal. Saya hanya bisa menarik binari dari kontrol sumber, melemparkannya ke server dan selesai.
user7676
@ user7676 - Anda bisa mengkompilasi ulang kode pada nomor versi yang sedang diproduksi. Tapi harus diakui jika Anda tidak memiliki rencana DR dan Anda berada dalam semacam diaster, itu akan lebih mudah dan lebih cepat. PS. ANDA MEMBUTUHKAN RENCANA DR !!!
Ali
1

Saya ragu untuk memeriksa file non-teks ke dalam kontrol sumber. Terutama yang harus dihasilkan oleh pengembang. Saya juga suka menyimpan file biner lainnya, seperti gambar dan PDF, di-zip dan disimpan di tempat lain untuk setiap tag / rilis.

Jeremy Heiler
sumber
0

Tidak, tetapi alat kontrol proyek in-house kami tidak secara otomatis, yang mengganggu saya.

Solusi saya adalah menandai semua file dalam rilis dan debug sebagai dapat ditulis dan ketika TFS mengeluh saya memintanya untuk mengabaikan file, jadi saya tidak pernah memiliki masalah dengan build gagal.

Dominique McDonnell
sumber
0

Saya menghindari memasukkan mereka ke dalam kontrol sumber. Mereka informasi yang berlebihan, binari dapat dibangun oleh kode sumber dalam revisi itu. Selain itu, kode sumber selalu mutakhir, build mungkin tidak sedang dikomit.

Malfist
sumber
0

Saya menyimpan beberapa file biner yang dihasilkan, seperti .NET interops dari proyek lain. Jadi jika saya memiliki proyek A yang membuat objek COM, dan kemudian Anda menggunakan objek COM dalam proyek B yang sangat longgar terkait yang menggunakannya melalui .NET interop, saya memeriksa bahwa interop yang dihasilkan dari proyek A ke proyek B. Itu adalah bukan ide yang baik, tetapi harus pergi ke suatu tempat karena AFAIK Visual Studio tidak akan membuat interop untuk Anda secara otomatis selama pembuatan.

MK01
sumber
-2

Menurut pendapat saya, tidak menyimpan binari dalam kontrol sumber adalah salah satu kesalahan paling umum. Mereka harus disimpan, versi, baselined / label bersama dengan sumber dan juga membangun alat. Sesuaikan diri Anda dengan pembuatan perangkat lunak yang tidak dapat dilacak ...

qba
sumber
5
Anda telah menyatakan pendapat Anda tetapi belum memberi kami alasan mengapa itu adalah praktik yang baik. Seseorang yang tertarik pada subjek ini akan mendapat nilai kecil dari jawaban ini tanpa lebih mendukungnya.
Walter