Devo eseguire il commit della cartella .vscode per il controllo del codice sorgente?


294

La .vscodecartella deve essere impegnata nel controllo del codice sorgente?

In un nuovo progetto, la cartella è vuota, tranne il settings.jsonfile. Che tipo di cose andrebbero in questa cartella? È specifico per la macchina, specifico per lo sviluppatore come la .vscartella e quindi non viene eseguito il commit? O tutti gli sviluppatori dovrebbero condividere questa cartella e quindi dovrebbe essere impegnata?

Il commento nella parte superiore del file .vscode/settings.jsonafferma:

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

Ciò sembra implicare che la cartella dovrebbe contenere impostazioni specifiche del progetto e quindi essere inclusa nell'origine. Inoltre, questo post su UserVoice sembra implicare che alcune digitazioni andrebbero lì dentro, suggerendo anche che dovrebbe essere impegnato.


Se avvii un progetto in Visual Studio e poi lo commetti, dovrebbe esserci un avvio corretto (almeno tipico) .gitignore FE. Se è pensato per essere lì, probabilmente lo sarà. Puoi anche fare riferimento a questo che ho usato senza problemi.
ChiefTwoPencils,

2
Una buona idea, @ChiefTwoPencils! Per la cronaca, l'impostazione predefinita .gitignorecreata da Visual Studio ha la .vscodecartella esclusa in questo momento. Ma poiché VS Code è di per sé piuttosto nuovo, potrebbero non esserci ancora riusciti. Ho lasciato la cartella non tracciata per ora mentre ottengo ulteriori informazioni su di essa.
Ronald Zarīts,

Risposte:


313

Controllare nella .vscodecartella se si desidera condividere le impostazioni, la configurazione dell'attività e la configurazione del debug con il team. Penso che in genere abbia senso condividere le impostazioni (ad es. Spazi bianchi o tabulazioni) con il team se si desidera applicare le impostazioni in un team. Nel team VS Code condividiamo anche impostazioni di debug e attività specifiche perché vogliamo che il nostro team abbia lo stesso set di target di debug e target di attività per VS Code.

A proposito, non è necessario disporre di una .vscodecartella nel progetto per le impostazioni. È inoltre possibile configurare le impostazioni a livello di utente.


54
Grazie! "Siamo nel team VS Code ..." è abbastanza buono per me - almeno per iniziare!
Ronald Zarīts,

97
Se vuoi condividere impostazioni a livello di file come "spazi bianchi vs tab", dovresti invece cercare una soluzione cross-editor come EditorConfig .
Tanz87

2
Questa directory ha una sottodirectory "chrome" di 80 MB. Sei sicuro che questo dovrebbe essere impegnato nel repository?
ygoe,

10
Non devi usare VSCode per qualcosa di simile a un progetto Python in cui le impostazioni dello spazio di lavoro avranno percorsi Python specifici dell'ambiente per cose come gli ambienti VirtualEnv o Anaconda. Controllare questi file suona come un grosso problema per la maggior parte degli scenari. Controlla invece un file di esempio / predefinito.
StefanGordon,

3

39

Tra commit / ignore c'è la terza opzione intelligente: commit con .defaultsuffisso.

Per esempio è possibile aggiungere settings.jsona .gitignore, e si impegnano settings.json.default, proprio come è pratica comune (nella mia squadra) con .envi file.

Ho preso questo consiglio dalle impostazioni dell'editor del video Commit al controllo della versione? di Mattias Petter Johansson


5
A settings.json.defaultha senso, ma questo presuppone che tutto il tuo team stia usando vs code e la tua base di codice non sia condivisa con un pubblico più vasto. Trovo che i miei progetti open source su GitHub, mi assicuro semplicemente di aggiungerlo al mio gitignore predefinito, perché non voglio forzare un particolare IDE sui miei potenziali utenti del mio codebase.
Jamescampbell,

2
@jamescampbell L'aggiunta di file specifici dell'IDE non impone quasi mai quell'IDE a nessuno: dà loro solo la possibilità di ottenere le impostazioni dell'ambiente comune se usano quell'IDE. Il problema più grande è se tali file sono ufficialmente supportati, ovvero intesi per essere sempre aggiornati e funzionanti. Teoricamente potresti avere più file di ambiente IDE per IDE diversi tutti presenti senza alcun conflitto.
LightCC

23
  • mai commettere .vscode/settings.json- con la strana eccezione di search.exclude. Se è davvero necessario, fare molta attenzione a mettere solo le impostazioni particolari del progetto che si desidera applicare ad altri sviluppatori.
  • per la convalida, formattazione, utilizzare la compilazione di altri file come package.json, .eslint, tsconfig.json, ecc
  • L'unico .vscode che ha senso includere sono complesse configurazioni di avvio per il debug.
  • Fai attenzione, potrebbe esserci un'estensione di terze parti nel tuo sistema che potrebbe mettere lì informazioni private!

Quello che non puoi fare è copiare e incollare l'intero file dei contenuti settings.json in .vscode/settings.json. Sto vedendo alcune persone fare questo e commettere il file è un'atrocità. In tal caso, non solo spezzerai lo spazio di lavoro degli altri ma, peggio ancora, applicherai agli utenti impostazioni che non ti dovrebbero piacere estetica, interfaccia utente, esperienza. Probabilmente romperai i loro ambienti perché alcuni dipendono molto dal sistema. Immagina di avere problemi di vista in modo che le mie editor.*impostazioni utente siano personalizzate e quando apro il tuo progetto la grafica cambia. Immagina di avere problemi di vista. Devo personalizzare l'editor dell'utente. * Le impostazioni per poter funzionare. Sarei arrabbiato.

Se sei serio, non impegnarti .vscode/settings.json. In generale, le impostazioni che potrebbero essere utili per un particolare progetto come la convalida, la compilazione, hanno senso ma in generale è possibile utilizzare file di configurazione di strumenti particolari come .eslint, tsconfig.json, .gitignore, package.json. ecc. Immagino che gli autori di vscode abbiano appena aggiunto il file per semplificare l'esperienza dei nuovi arrivati, ma se vuoi essere serio non farlo!

L'unica eccezione, e in casi molto particolari, potrebbe essere search.exclude


3
Sento che il tuo suggerimento .vscode/settingsè troppo restrittivo. Usa .eslinto .editorconfigfile se puoi, ma dovresti comunque verificare .vscode/settingsse vuoi davvero che un'impostazione sia condivisa tra tutti gli sviluppatori di un team / progetto
Matt Bierner,

3
Matt, perché pensi che tutti gli altri sviluppatori utilizzino vscode? Potrebbero essere le persone che usano webstorm, vim, sublime, ecco perché dovresti lavorare con eslint, ecc. E non settings.json.
cancerbero,

Ancora una volta, verificare in .vscode/settingssenso se stai lavorando su un team che utilizza vscode o stai lavorando a un progetto in cui molti sviluppatori usano vscode. Non tutte queste impostazioni hanno equivalenti tra editor
Matt Bierner,

@MattBierner abbastanza equo, se stai sviluppando progetti ravvicinati in una società che impone l'editore, ma non penso che sia una situazione comune e specialmente in progetti open source ...
cancerbero

Il punto sulle estensioni di terze parti è molto valido - Ad esempio, credo che l'estensione MS SQL aggiungerà i profili di connessione alle impostazioni del project / area di lavoro. Json se esiste - Sebbene non memorizzi le credenziali, potrebbe essere il check-in nei nomi dei server ecc. .
Dan Harris

18

Riassumendo altre risposte

La raccomandazione è di escludere generalmente .vscode cartella, ma lasciare alcuni file JSON selezionati che consentano ad altri sviluppatori di ricreare le impostazioni condivise.

Esempi di impostazioni da includere:

  • Configurazioni di test specifici della lingua per eseguire le suite di test (settings.json )
  • Impostazioni di estensione per linter e strumenti di formattazione del codice per applicare le regole della lingua utilizzate in questo repository (settings.json )
  • Configurazioni di esecuzione e debug (launch.json )
  • Attività condivise - se gestite con VS Code ( tasks.json)

Si noti che alcune impostazioni possono essere archiviate nel file dell'area di lavoro o trasferite ad esso dalla cartella .vscode. Vedi sotto.


.gitignoreCodice di esempio da utilizzare (e dove trovarlo)

Ecco le impostazioni, come suggerito su https://gitignore.io . Puoi cercare "VisualStudioCode" lì per ottenere l'ultimo .gitignorefile consigliato . Uso questo sito Web come punto di partenza .gitignoreper la maggior parte dei miei nuovi repository:

# 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

Nel sopra .gitignoredi file, la .vscode/*riga dice di escludere tutto nella .vscodecartella, ma poi le !.vscode/a_specific_filelinee tell git per "non" ignorare alcuni file specifici in quella cartella ( settings.json, launch.json, ecc). Il risultato finale è che tutto è escluso nella .vscodecartella tranne i file specificatamente indicati in una di quelle altre righe.


Altri fattori e come capire da soli ...

Includere la .vscodecartella nel tuo repository non danneggia effettivamente nessuno che utilizza un IDE diverso (o editor di testo / codice).

Tuttavia, potrebbe danneggiare altre persone che usano VS Code, se questi file includono impostazioni generiche che richiedono qualcosa di specifico per il tuo ambiente, che è diverso nel loro ambiente - come il percorso assoluto in cui è installato il repository (in cui l'estensione VS Code Python inserisce costantemente il pythonpathin.vscode/settings.json ). La chiave è evitare di salvare le impostazioni personalizzate per l'ambiente locale, condividendo solo quelle che possono essere utilizzate da tutti.

Ad esempio, se i file di impostazione IDE hanno percorsi assoluti per il repository o per qualsiasi file / libreria, ecc., Allora è un problema, non condividere. Ma se tutti i riferimenti sono relativi, dovrebbero funzionare per chiunque utilizzi il repository (sebbene, fai attenzione alle differenze di specifica del percorso tra Windows / Unix ..).


Informazioni sulle impostazioni di Utente, Area di lavoro e Cartella

Nota: i file delle impostazioni nella .vscodecartella vengono generalmente aggiornati solo quando si apportano modifiche alla versione della cartella delle impostazioni (tuttavia sembrano esserci molte eccezioni).

  • Se si apportano modifiche alle impostazioni dell'utente , in genere vengono archiviate altrove.
  • Se si apportano modifiche alle impostazioni dell'area di lavoro , vengono normalmente archiviate nella *.code-workspacecartella che si sta attualmente utilizzando (spesso vanno ancora nei file delle impostazioni della cartella, ma è possibile spostarli manualmente!).

Ciò significa che dovresti mettere le impostazioni personalizzate per il tuo PC personale nelle impostazioni utente e, se possibile, inserire quelle generiche per un particolare progetto / pacchetto negli altri.

  • Ho notato che quando si utilizza l'estensione Python, il .vscode/settings.jsonfile (che salva le impostazioni della cartella ) salva sempre il percorso assoluto sotto l' pythonpathimpostazione, quindi ho rimosso la sua esclusione dai miei .gitignorefile e non l' ho più salvato nei miei repository Python. Anche se lo salvo con un percorso relativo, VS Code lo reimposta sul percorso assoluto.
  • Invece, ho appena salvato qualsiasi cartella che devo usare in Code come area di lavoro (ad esempio, crea un myproject.code-workspacefile con File -> Salva area di lavoro come . In questo modo, puoi controllare ciò che va nel file dell'area di lavoro e salvarlo nel repository, escludendo il file delle impostazioni della cartella ( .vscode/settings.json). Puoi praticamente spostare qualsiasi impostazione tra lo spazio di lavoro e i file delle impostazioni della cartella per controllare cosa viene salvato e cosa no. Tieni presente che il file dello spazio di lavoro sostituirà qualsiasi cosa nel file di impostazione della cartella.

Il lungo e il breve è: puoi semplicemente usare un file dello spazio di lavoro e inserire le impostazioni più comuni in esso, inserendo le impostazioni locali nel file delle impostazioni della cartella, anche se questo sembra dipendere dalle estensioni / lingue che stai utilizzando.

Naturalmente, potresti avere altri motivi per salvare il .vscode/settings.jsonfile o parte di esso. Oppure questo potrebbe non essere un problema per le impostazioni nella tua lingua corrente.

Il tuo chilometraggio può variare ...


10

Perché non guardare solo la pratica, a parte gli argomenti qui intorno?

Uno dei più grandi progetti che .vscodeho trovato finora è Mozilla Firefox . Sembra che il team di Firefox condivida le attività comuni e le estensioni consigliate.

Quindi suppongo che non sia una cattiva idea mantenere .vscode, purché tu sappia cosa stai facendo.

Aggiornerò questo post quando vedrò altri grandi progetti che condividono .vscode.


8

Come le altre risposte: no.

A titolo di esempio, considera l'approccio scelto da Git 2.19 (Q3 2018), che aggiunge uno script (in contrib/) per aiutare gli utenti di VSCode a lavorare meglio con la base di codice Git.

In altre parole, genera il .vscodecontenuto (se non esiste ancora), non modificarlo.

Vedi commit 12861e2 , commit 2a2cdd0 , commit 5482f41 , commit f2a3b68 , commit 0f47f78 , commit b4d991d , commit 58930fd , commit dee3382 , commit 54c06c6 (30 lug 2018) di Johannes Schindelin ( dscho) .
(Unita da Junio ​​C Hamano - gitster- in commit 30cf191 , 15 ago 2018)

contrib: aggiungi uno script per inizializzare la configurazione del codice VS.

VS Code è un editor di codice sorgente leggero ma potente che funziona sul desktop ed è disponibile per Windows, macOS e Linux.
Tra le altre lingue, ha il supporto per C / C ++ tramite un'estensione, che offre non solo di compilare ed eseguire il debug del codice, ma anche di Intellisense, ovvero il completamento del riconoscimento del codice e altre cose simili.

Questa patch aggiunge uno script che aiuta a configurare l'ambiente in modo che funzioni efficacemente con VS Code: esegui semplicemente lo script della shell Unix contrib/vscode/init.sh, che crea i file pertinenti e apri la cartella di livello superiore del codice sorgente di Git in VS Code .


1

La risposta è "NO", perché la cartella .vscode è per questo editor e non dovresti spingere queste impostazioni personali per repository in caso di confusione degli altri, quindi puoi aggiungerlo al file .gitignore del tuo progetto per ignorare le modifiche


17
Non sarei d'accordo con la tua posizione severa. Come menzionato nella risposta di @BenjaminPasero, non è necessario, ma in molti casi ha senso, ad esempio condividere la configurazione delle attività. Naturalmente, è bene essere consapevoli dei propri compagni di squadra e non forzare inutilmente le preferenze su di loro.
Ronald Zarīts,

Sì, questo è il motivo per cui abbiamo impostazioni utente e impostazioni dell'area di lavoro separate (il .vscode/settings.jsonfile in un'area di lavoro): code.visualstudio.com/docs/getstarted/… Solo cose come la configurazione degli strumenti vanno nelle impostazioni dell'area di lavoro
Matt Bierner,

@ RonaldZarīts La cartella .vscode riguarda le impostazioni del tuo editor e gli stili di codice, penso che sia solo per uso personale, quindi, come ho detto prima, non spingere la cartella per git control flow.
Jialin Wang

6
@jialinwang Siamo spiacenti, l'ho già fatto. ;) A parte gli scherzi, contiene anche elementi che sono utili da condividere, ad esempio nel mio progetto abbiamo (1) launch.json- avviare configurazioni per il debug che possono essere banali da impostare. (2) settings.jsonimpostazioni a livello di progetto, come compilatore TypeScript da usare, regole degli spazi bianchi, (3) tasks.json- comandi di compilazione. Puoi scegliere di non condividere, ma lo troviamo utile.
Ronald Zarīts,

@jialinwang No, non lo sono. Sono impostazioni a livello di cartella. Non solo dovresti includere quello di primo livello, se hai delle impostazioni specifiche per le sottocartelle, dovresti anche includerle. L'importante è mantenere le preferenze dell'utente fuori dalle impostazioni a livello di cartella (questo è importante anche per altri motivi). Il tipo di cose che dovresti avere nelle impostazioni a livello di cartella dovrebbe applicarsi all'intera cartella: formattatori, linters, convenzioni di spazi bianchi (ad es.
Tagliare

1

Un modo semplice per mantenere le impostazioni senza eseguirne il commit nel repository git del progetto consiste nel creare un'area di lavoro e aggiungere una cartella al suo interno.

Quando si crea un'area di lavoro, è necessario salvare un file code-workspace. Questo file contiene impostazioni personalizzate, è sufficiente salvarlo dal repository git e sarà libero di aggiungerlo .vscodeal .gitignorefile.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.