Haruskah saya menambahkan file .vcxproj.filter ke kontrol sumber?

169

Saat mengevaluasi Visual Studio 2010 Beta 2, saya melihat bahwa di direktori yang dikonversi, file vcproj saya menjadi file vcxproj . Ada juga file vcxproj.filter di samping setiap proyek yang tampaknya berisi deskripsi struktur folder (\ Source Files, \ Header Files, dll.).

Apakah menurut Anda file filter ini harus disimpan per pengguna, atau harus dibagi di seluruh grup dev dan diperiksa ke dalam SCC?

Pemikiran saya saat ini adalah untuk memeriksa mereka, tetapi saya bertanya-tanya apakah ada alasan untuk tidak melakukan itu, atau mungkin alasan bagus mengapa saya harus memeriksanya.

Manfaat yang jelas adalah bahwa struktur folder akan cocok jika saya melihat mesin orang lain, tetapi mungkin mereka ingin mengatur kembali hal-hal secara logis?

jschroedl
sumber

Jawaban:

59

Versi sebelumnya dari Visual Studio (setidaknya versi 6.0 dan 2008) menyimpan informasi itu dalam file proyek mereka masing-masing (masing-masing .dsp dan .vcproj file), yang tentu saja baik untuk ditambahkan ke SCC.

Saya tidak dapat memikirkan alasan apa pun untuk tidak menyertakan file .filter ini di SCC

jrbjazz
sumber
Aku bersamamu. Saya memeriksanya. Terima kasih!
jschroedl
111

Kami sengaja menarik filter. file informasi dari .vcproj ketika kami menerjemahkan ke format MSBuild .vcxproj. Salah satu alasannya adalah apa yang Anda tunjukkan, bahwa filter itu murni pandangan logis, dan anggota tim yang berbeda mungkin menginginkan tampilan berbeda. Yang lain adalah bahwa kadang-kadang membangun diatur untuk memeriksa cap waktu file proyek, dan memicu membangun kembali jika telah berubah - karena itu mungkin berarti ada file sumber yang berbeda untuk membangun, atau pengaturan yang berbeda, dll. Saya tidak ingat jika kami benar-benar dikirim dengan bangunan yang memicu hal itu, tetapi idenya adalah bahwa kami tidak ingin memicu pembangunan kembali hanya karena filter berubah, karena mereka tidak mempengaruhi pembangunan.

dan moseley
sumber
3
untuk rekondisi otomatis, Anda membangun jika ada file yang berubah (mis. sumber), jadi sekarang tidak ada yang berubah kecuali kami memiliki file lain untuk dikelola.
gbjbaanb
3
dengan kata lain, Anda mengelola kedua file seolah-olah mereka adalah satu. Saya tidak berpikir orang lain akan memperlakukan mereka secara terpisah. Itu ide yang bagus, tetapi sedikit pemikiran tentang praktik dunia nyata akan jauh (seperti menempatkan runtime di WinSxS)
gbjbaanb
9
Saya memperlakukan mereka secara terpisah. Sejauh yang saya ketahui, semakin sedikit omong kosong yang harus dipertahankan sebagai bagian dari keadaan proyek, semakin baik, jadi saya pikir ini adalah keputusan yang baik.
rwallace
6
Bisakah kita menonaktifkan filter itu sama sekali jika kita tidak ingin menggunakan pohon abstrak / logis tetapi hanya melihat satu sistem file biasa?
Johan Boulé
4
@JohanBoule: Saya sepenuhnya setuju! Mereka seharusnya baru saja menghapus filter di IDE. Sudah ada struktur pohon logis dan itu disebut "filesystem". Saat ini ada banyak duplikasi - setiap file harus ditambahkan ke sistem file, ke skrip build (vcxproj), filter (vcxproj.filters), kontrol sumber, dan mungkin di tempat lain. Itu melanggar prinsip KERING. Untungnya tampaknya file filter bersifat opsional . Anda bisa menghapusnya dan menggunakan tombol "Tampilkan Semua File" di IDE. Sayang sekali itu bukan default.
Yakov Galka
5

Saya baru saja menemukan bahwa jika Anda menggunakan Git, Anda dapat menandai file .filter untuk diperlakukan sebagai gabungan untuk digabung agar lebih sederhana. Cukup tambahkan baris:

*.vcxproj.filters merge=union

ke file .gitattributes Anda.

Lihat Menggunakan .gitattributes untuk menghindari penggabungan konflik untuk detail lebih lanjut.

parsley72
sumber
Tautan yang disebutkan tidak mengatakan file .filters ini harus memiliki "gabungan" yang disebutkan dalam file gitattributes.
ollydbg23
2
Tapi itu mengatakan apa yang merge=unionterjadi - tidak ada yang dijanjikan. Dengan pengetahuan itu dan gagasan yang sangat luas tentang bagaimana * .filter-file terlihat, mudah untuk melihat mengapa merge=unionide yang bagus untuk file-file itu.
Peter Schneider
1

Ini tidak boleh ditambahkan dalam kasus Anda menggunakan CMake(atau alat membangun serupa) untuk menghasilkan file seperti *.sln, *.vcxproj, *.vcxproj.filtersdll, karena file ini mungkin berisi path lengkap ke Anda Folder Proyek dan lainnya hanya folder tertentu komputer Anda .

V. Panchenko
sumber