Haruskah saya mengkomit folder .vscode ke kontrol sumber?

294

Apakah .vscodefolder dimaksudkan untuk dikomit ke kontrol sumber?

Dalam proyek baru, folder kosong, kecuali settings.jsonfile. Hal-hal apa saja yang akan masuk ke folder ini? Apakah khusus mesin, khusus pengembang seperti .vsfolder dan karenanya tidak dikomit? Atau haruskah semua pengembang membagikan folder ini dan karenanya harus dilakukan?

Komentar di bagian atas file .vscode/settings.jsonmenyatakan:

// Place your settings in this file to overwrite default and user settings.
{
}

Ini tampaknya menyiratkan bahwa folder tersebut harus berisi pengaturan spesifik proyek dan dengan demikian dimasukkan dalam sumber. Juga, posting ini pada UserVoice tampaknya menyiratkan beberapa pengetikan akan masuk ke sana, juga menyarankan bahwa itu harus dilakukan.

Ronald Zarīts
sumber
Jika Anda memulai proyek di Visual Studio dan kemudian komit, harus ada yang tepat (setidaknya khas) mulai .gitignore FE. Jika itu dimaksudkan untuk berada di sana mungkin akan ada. Anda juga dapat referensi ini yang saya gunakan tanpa masalah.
ChiefTwoPencils
2
Ide bagus, @ChiefTwoPencils! Sebagai catatan, default .gitignoreyang dibuat Visual Studio memiliki .vscodefolder dikecualikan pada saat ini. Tetapi karena VS Code itu sendiri agak baru, mereka mungkin belum sempat melakukannya. Saya telah meninggalkan folder tidak terlacak untuk saat ini sementara saya mendapatkan lebih banyak info tentangnya.
Ronald Zarīts

Jawaban:

313

Periksa di .vscodefolder jika Anda ingin berbagi pengaturan, konfigurasi tugas, dan konfigurasi debug dengan tim. Saya pikir secara umum masuk akal untuk berbagi pengaturan (mis. Spasi vs tab) dengan tim jika Anda ingin menerapkan pengaturan dalam tim. Kami di tim VS Code berbagi pengaturan debug dan tugas khusus juga karena kami ingin tim kami memiliki serangkaian target debug dan target tugas yang sama untuk Kode VS.

Tapi Anda tidak perlu memiliki .vscodefolder di proyek Anda untuk pengaturan. Anda juga dapat mengonfigurasi pengaturan pada tingkat pengguna.

Benjamin Pasero
sumber
54
Terima kasih! "Kami di tim VS Code ..." cukup baik untukku - setidaknya untuk memulai!
Ronald Zarīts
97
Jika Anda ingin berbagi pengaturan tingkat file seperti "whitespace vs tabs" maka Anda harus melihat solusi lintas-editor seperti EditorConfig .
Tanz87
2
Direktori ini memiliki subdirektori "chrome" dengan ukuran 80 MB. Apakah Anda yakin ini harus dilakukan ke repositori?
ygoe
10
Anda tidak boleh menggunakan VSCode untuk sesuatu seperti proyek python di mana pengaturan ruang kerja akan memiliki jalur python khusus lingkungan untuk hal-hal seperti lingkungan VirtualEnv atau Anaconda. Memeriksa file-file ini dalam suara seperti masalah besar untuk sebagian besar skenario. Alih-alih, periksa sampel / file default.
StefanGordon
3
Tindak lanjuti symbols.json: stackoverflow.com/questions/51876769/…
ripper234
39

Diantara komit / abaikan ada opsi pintar ketiga: komit dengan .defaultsufiks.

Misalnya Anda dapat menambahkan settings.jsonuntuk .gitignore, dan berkomitmen settings.json.default, seperti itu adalah praktek yang umum (di tim saya) dengan .envfile.

Saya mengambil saran ini dari pengaturan editor Komit video ke kontrol versi? oleh Mattias Petter Johansson

Tymek
sumber
5
Sebuah settings.json.defaultmasuk akal tapi ini adalah asumsi seluruh tim Anda menggunakan vs kode dan basis kode Anda tidak sedang bersama untuk khalayak yang lebih luas. Saya menemukan bahwa proyek open source saya di GitHub, saya hanya memastikan saya menambahkannya ke gitignore default saya, karena saya tidak ingin memaksakan IDE tertentu pada pengguna potensial saya dari basis kode saya.
jamescampbell
2
@ jamescampbell Menambahkan file khusus IDE hampir tidak pernah memaksa IDE pada siapa pun - itu hanya memberi mereka opsi untuk mendapatkan pengaturan lingkungan umum Anda jika mereka kebetulan menggunakan IDE itu. Pertanyaan lebih besar adalah apakah file-file itu didukung secara resmi - yaitu dimaksudkan untuk selalu up-to-date dan berfungsi. Secara teoritis Anda dapat memiliki banyak file lingkungan IDE untuk berbagai IDE yang ada tanpa konflik.
LightCC
23
  • tidak pernah melakukan .vscode/settings.json- dengan pengecualian aneh search.exclude. Jika Anda benar-benar perlu, berhati-hatilah untuk menempatkan hanya pengaturan tertentu dari proyek Anda yang ingin Anda terapkan kepada pengembang lain.
  • untuk validasi, format, penggunaan kompilasi file lain seperti package.json, .eslint, tsconfig.json, dll
  • Satu-satunya .vscode yang masuk akal adalah konfigurasi peluncuran kompleks untuk debugging.
  • Hati-hati, mungkin ada ekstensi pihak ketiga di sistem Anda yang bisa menyimpan informasi pribadi di sana!

Apa yang tidak dapat Anda lakukan adalah menyalin & menempelkan seluruh file content settings.json ke .vscode/settings.json. Saya melihat beberapa orang melakukan ini dan melakukan file adalah kekejaman. Dalam hal ini Anda tidak hanya akan merusak ruang kerja orang lain tetapi yang terburuk, Anda akan menegakkan pengaturan kepada pengguna yang tidak Anda sukai estetika, UI, pengalaman. Anda mungkin akan merusak lingkungan mereka karena beberapa sangat tergantung pada sistem. Bayangkan saya memiliki masalah penglihatan sehingga editor.*pengaturan pengguna saya dipersonalisasi dan ketika saya membuka proyek Anda perubahan visual. Bayangkan saya memiliki masalah penglihatan, saya perlu mempersonalisasi editor pengguna. * Pengaturan untuk dapat bekerja. Saya akan marah.

Jika Anda serius jangan berkomitmen .vscode/settings.json. Secara umum, pengaturan yang dapat berguna untuk proyek tertentu seperti validasi, kompilasi, masuk akal tetapi secara umum Anda dapat menggunakan file konfigurasi alat tertentu seperti. Eslint, tsconfig.json, .gitignore, package.json. dll. Saya kira penulis vscode baru saja menambahkan file untuk menyederhanakan pengalaman pendatang baru tetapi jika Anda ingin serius jangan!

Satu-satunya pengecualian, dan dalam beberapa kasus tertentu adalah search.exclude

kankerbero
sumber
3
Saya rasa saran Anda .vscode/settingsterlalu ketat. Gunakan .eslintatau .editorconfigfile jika Anda bisa, tetapi Anda masih harus check in .vscode/settingsjika Anda benar-benar ingin pengaturan untuk dibagikan di antara semua pengembang di tim / proyek
Matt Bierner
3
Matt, mengapa Anda menganggap bahwa semua pengembang lain menggunakan vscode? Bisa jadi orang-orang menggunakan webstorm, vim, luhur, itu sebabnya Anda harus bekerja dengan eslint, dll dan bukan pengaturan.json
cancerbero
Sekali lagi, memeriksa .vscode/settingsmasuk akal jika Anda bekerja di tim yang menggunakan vscode atau Anda sedang mengerjakan proyek di mana banyak pengembang menggunakan vscode. Tidak semua pengaturan ini memiliki setara lintas-editor
Matt Bierner
@MattBierner cukup adil, jika Anda sedang mengembangkan proyek sumber dekat di sebuah perusahaan yang menegakkan editor, tapi saya tidak berpikir itu adalah situasi yang umum dan khususnya dalam proyek-proyek sumber terbuka ...
Cancerbero
Poin tentang ekstensi pihak ketiga sangat valid - Sebagai contoh saya percaya ekstensi MS SQL akan menambahkan profil koneksi ke pengaturan proyek / ruang kerja.json jika ada - Meskipun tidak menyimpan kredensial, namun mungkin memeriksa nama server dll .
Dan Harris
18

Rangkumlah jawaban lain

Rekomendasi adalah untuk secara umum mengecualikan .vscodefolder, tetapi meninggalkan file JSON pilih yang memungkinkan pengembang lain untuk membuat kembali pengaturan bersama.

Contoh pengaturan termasuk:

  • Konfigurasi tes khusus bahasa untuk menjalankan suite tes ( settings.json)
  • Pengaturan ekstensi untuk linter dan alat pemformatan kode untuk menegakkan aturan bahasa yang digunakan dalam repo ini ( settings.json)
  • Jalankan dan debug konfigurasi ( launch.json)
  • Tugas bersama - jika dikelola dengan VS Code ( tasks.json)

Perhatikan bahwa beberapa pengaturan dapat disimpan dalam file ruang kerja, atau ditransfer ke sana dari folder .vscode. Lihat di bawah.


.gitignoreKode sampel untuk digunakan (dan di mana mendapatkannya)

Berikut adalah pengaturannya, seperti yang disarankan di https://gitignore.io . Anda dapat mencari "VisualStudioCode" di sana untuk mendapatkan .gitignorefile yang direkomendasikan terbaru . Saya menggunakan situs web ini sebagai titik awal .gitignoreuntuk sebagian besar repo baru saya:

# Created by https://www.gitignore.io/api/visualstudiocode
# Edit at https://www.gitignore.io/?templates=visualstudiocode

### VisualStudioCode ###
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json

### VisualStudioCode Patch ###
# Ignore all local history of files
**/.history

# End of https://www.gitignore.io/api/visualstudiocode

Dalam contoh di atas .gitignorefile, .vscode/*baris kata untuk mengecualikan segala sesuatu di .vscodefolder, tapi kemudian !.vscode/a_specific_filegaris tell git untuk "tidak" mengabaikan beberapa file tertentu dalam folder itu ( settings.json, launch.json, dll). Hasil akhirnya adalah bahwa semuanya dikecualikan dalam .vscodefolder kecuali untuk file yang secara khusus disebutkan di salah satu baris lainnya.


Faktor-Faktor Lain dan Cara Mencari Tahu untuk Diri Sendiri ...

Memasukkan .vscodefolder dalam repo Anda tidak benar-benar melukai siapa pun yang menggunakan IDE berbeda (atau editor teks / kode).

Namun, mungkin merugikan orang lain yang menggunakan Kode VS, jika file-file ini termasuk pengaturan generik yang memerlukan sesuatu yang spesifik untuk lingkungan Anda, yang berbeda di lingkungan mereka - seperti jalur absolut repo diinstal di (yang VS Kode Python ekstensi secara konsisten dimasukkan ke dalam yang pythonpathdi .vscode/settings.json). Kuncinya adalah untuk menghindari penyimpanan pengaturan yang khusus untuk lingkungan lokal Anda, hanya berbagi yang dapat digunakan oleh semua orang.

Misalnya, jika file pengaturan IDE memiliki jalur absolut ke repo atau file / perpustakaan, dll., Maka itu buruk, jangan bagikan. Tetapi jika semua referensi relatif, maka mereka harus bekerja untuk siapa saja yang menggunakan repo (walaupun, hati-hati tentang perbedaan spesifikasi jalur antara Windows / Unix ..).


Tentang pengaturan Pengguna, Ruang Kerja, dan Folder

Catatan: file pengaturan dalam .vscodefolder ini umumnya hanya diperbarui ketika Anda membuat perubahan pada versi folder dari pengaturan (tampaknya ada banyak pengecualian).

  • Jika Anda membuat perubahan pada pengaturan pengguna , mereka biasanya disimpan di tempat lain.
  • Jika Anda membuat perubahan pada pengaturan ruang kerja , mereka biasanya disimpan dalam *.code-workspacefolder yang sedang Anda gunakan (mereka masih sering masuk ke file pengaturan folder - tetapi Anda dapat memindahkannya secara manual!).

Ini berarti Anda harus meletakkan pengaturan khusus untuk PC pribadi Anda ke dalam pengaturan pengguna , dan menempatkan yang umum untuk proyek / paket tertentu ke dalam yang lain, bila memungkinkan.

  • Saya perhatikan bahwa ketika menggunakan ekstensi Python, .vscode/settings.jsonfile (yang menyimpan pengaturan folder ) selalu menyimpan path absolut di bawah pythonpathpengaturan, jadi saya telah menghapus pengecualiannya dari .gitignorefile saya dan tidak lagi menyimpannya ke repositori Python saya. Bahkan jika saya menyimpannya dengan jalur relatif, VS Code hanya menyetel ulang ke jalur absolut.
  • Sebagai gantinya, saya hanya menyimpan folder apa pun yang perlu saya gunakan dalam Kode sebagai ruang kerja (misalnya membuat myproject.code-workspacefile dengan File -> Simpan ruang kerja sebagai . Dengan begitu, Anda dapat mengontrol apa yang masuk ke file ruang kerja dan menyimpannya ke repo, sambil mengecualikan file pengaturan folder ( .vscode/settings.json). Anda dapat memindahkan hampir semua pengaturan antara ruang kerja dan file pengaturan folder untuk mengontrol apa yang disimpan dan apa yang tidak. Hanya perlu diingat bahwa file ruang kerja akan menimpa apa pun dalam file pengaturan folder.

Panjang dan pendeknya adalah - Anda hanya dapat menggunakan file ruang kerja, dan menempatkan pengaturan paling umum di dalamnya, sambil meletakkan pengaturan lokal di file pengaturan folder, meskipun ini tampaknya tergantung pada ekstensi / bahasa yang Anda gunakan.

Tentu saja, Anda mungkin punya alasan lain untuk menyimpan .vscode/settings.jsonfile, atau sebagian dari itu. Atau ini mungkin tidak menjadi masalah untuk pengaturan dalam bahasa Anda saat ini.

Mileage Anda Mungkin Berbeda ...

LightCC
sumber
10

Mengapa tidak hanya melihat latihan, selain argumen di sekitar sini?

Salah satu proyek terbesar yang terus .vscodesaya temukan sejauh ini adalah Mozilla Firefox . Sepertinya tim Firefox berbagi tugas umum dan ekstensi yang disarankan.

Jadi saya kira itu bukan ide yang buruk untuk disimpan .vscode, selama Anda tahu apa yang Anda lakukan.

Saya akan memperbarui posting ini ketika saya melihat proyek-proyek besar lainnya yang dibagikan .vscode.

Bumsik Kim
sumber
8

Sama seperti jawaban lain: tidak.

Sebagai ilustrasi, pertimbangkan pendekatan yang dipilih oleh Git 2.19 (Q3 2018), yang menambahkan skrip (dalam contrib/ ) untuk membantu pengguna VSCode bekerja lebih baik dengan basis kode Git.

Dengan kata lain, hasilkan .vscode konten (jika belum ada), jangan versi itu.

Lihat komit 12861e2 , komit 2a2cdd0 , komit 5482f41 , komit f2a3b68 , komit 0f47f78 , komit b4d991d , komit 58930fd , komit dee3382 , komit dee3382 , komit 54c06c6 (30 Jul 2018) oleh Johannes Schindelin ( dscho) .
(Digabung oleh Junio ​​C Hamano - gitster- dalam komit 30cf191 , 15 Agustus 2018)

contrib: tambahkan skrip untuk menginisialisasi konfigurasi Kode VS

VS Code adalah editor kode sumber yang ringan namun kuat yang berjalan di desktop Anda dan tersedia untuk Windows, macOS dan Linux.
Di antara bahasa-bahasa lain, ia memiliki dukungan untuk C / C ++ melalui ekstensi, yang menawarkan untuk tidak hanya membangun dan men-debug kode, tetapi juga Intellisense, yaitu penyelesaian yang sadar-kode dan keramahan yang serupa.

Patch ini menambahkan skrip yang membantu mengatur lingkungan agar bekerja secara efektif dengan VS Code: cukup jalankan skrip Unix contrib/vscode/init.sh, yang membuat file yang relevan, dan buka folder tingkat atas kode sumber Git dalam VS Code .

VONC
sumber
1

Jawabannya adalah "TIDAK", karena folder .vscode adalah untuk editor ini dan Anda tidak boleh mendorong pengaturan pribadi ini untuk repo jika membingungkan orang lain, sehingga Anda dapat menambahkannya ke file .gitignore proyek Anda untuk mengabaikan perubahan

jialin wang
sumber
17
Saya tidak setuju dengan pendirian Anda yang ketat. Seperti disebutkan dalam jawaban oleh @BenjaminPasero, Anda tidak harus melakukannya, tetapi masuk akal dalam banyak kasus, misalnya berbagi konfigurasi tugas. Tentu saja, baik untuk memperhatikan rekan satu tim dan tidak memaksakan preferensi pada mereka secara tidak perlu.
Ronald Zarīts
Ya, inilah mengapa kami memiliki pengaturan pengguna dan pengaturan ruang kerja yang terpisah ( .vscode/settings.jsonfile dalam ruang kerja): code.visualstudio.com/docs/getstarted/... Hanya hal-hal seperti konfigurasi alat yang masuk ke pengaturan ruang kerja
Matt Bierner
@ RonaldZarīts .vscode folder adalah tentang pengaturan editor Anda dan gaya kode, saya pikir itu hanya untuk penggunaan sendiri, jadi seperti yang saya katakan sebelumnya, jangan mendorong folder untuk mendapatkan aliran kontrol.
jialin wang
6
@ jialinwang Maaf, saya sudah melakukannya. ;) Selain lelucon, ini juga berisi item yang berguna untuk dibagikan, misalnya dalam proyek saya yang kami miliki (1) launch.json- luncurkan konfigurasi untuk debugging yang bisa non-sepele untuk diatur. (2) settings.jsonpengaturan tingkat proyek, seperti compiler TypeScript untuk digunakan, aturan spasi, (3) tasks.json- membangun perintah. Anda dapat memilih untuk tidak berbagi, tetapi kami merasa ini berguna.
Ronald Zarīts
@ jialinwang Tidak. Mereka adalah pengaturan tingkat folder. Anda tidak hanya harus menyertakan yang tingkat atas, jika Anda memiliki pengaturan khusus untuk sub-folder, Anda juga harus memasukkannya. Yang penting adalah menjaga preferensi pengguna Anda keluar dari pengaturan level folder (ini juga penting karena alasan lain). Jenis hal yang harus Anda miliki dalam pengaturan level folder Anda harus berlaku untuk seluruh folder: formatters, linters, whitespace convention (mis. Trim akhir trailing baris baru, ukuran tab ...) ...
DylanYoung
1

Cara sederhana untuk menjaga pengaturan Anda tanpa membuatnya di repositori proyek git Anda adalah membuat ruang kerja dan menambahkan folder ke dalamnya.

Saat Anda membuat ruang kerja, Anda harus menyimpan file code-workspace. File ini berisi pengaturan khusus, cukup simpan file ini dari repositori git dan akan bebas untuk ditambahkan .vscodeke .gitignorefile.

Wendel
sumber