Soll ich den Ordner .vscode der Quellcodeverwaltung übergeben?

293

Soll der .vscodeOrdner der Quellcodeverwaltung übergeben werden?

In einem neuen Projekt ist der Ordner mit Ausnahme der settings.jsonDatei leer . Welche Art von Dingen würde in diesen Ordner gelangen? Ist es maschinenspezifisch, entwicklerspezifisch wie der .vsOrdner und daher nicht festgeschrieben? Oder sollten alle Entwickler diesen Ordner freigeben und ihn daher festschreiben?

Der Kommentar oben in der Datei .vscode/settings.jsonlautet:

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

Dies scheint zu implizieren, dass der Ordner projektspezifische Einstellungen enthalten und somit in der Quelle enthalten sein sollte. Außerdem scheint dieser Beitrag auf UserVoice zu implizieren, dass einige Eingaben dort eingehen würden, was auch darauf hindeutet, dass er festgeschrieben werden sollte.

Ronald Zarīts
quelle
Wenn Sie ein Projekt in Visual Studio starten und dann festschreiben, sollte es einen ordnungsgemäßen (zumindest typischen) Start von .gitignore FE geben. Wenn es dort sein soll, wird es wahrscheinlich sein. Sie können auch verweisen diese , die ich ohne Probleme benutzt habe.
ChiefTwoPencils
2
Eine gute Idee, @ChiefTwoPencils! Für den Datensatz ist der von .gitignoreVisual Studio erstellte Standard .vscodezu diesem Zeitpunkt ein Ordner ausgeschlossen. Aber da VS Code selbst ziemlich neu ist, sind sie möglicherweise noch nicht dazu gekommen. Ich habe den Ordner vorerst nicht verfolgt, während ich weitere Informationen dazu erhalte.
Ronald Zarīts

Antworten:

311

Überprüfen Sie im .vscodeOrdner, ob Sie Einstellungen, Aufgabenkonfiguration und Debug-Konfiguration für das Team freigeben möchten. Ich denke im Allgemeinen ist es sinnvoll, Einstellungen (z. B. Leerzeichen oder Tabulatoren) mit dem Team zu teilen, wenn Sie Einstellungen in einem Team erzwingen möchten. Wir im VS Code-Team teilen auch Debug- und aufgabenspezifische Einstellungen, da wir möchten, dass unser Team die gleichen Debug- und Aufgabenziele für VS Code hat.

Übrigens müssen Sie .vscodefür die Einstellungen keinen Ordner in Ihrem Projekt haben. Sie können Einstellungen auch auf Benutzerebene konfigurieren.

Benjamin Pasero
quelle
53
Vielen Dank! "Wir im VS Code Team ..." ist gut genug für mich - zumindest für den Start!
Ronald Zarīts
97
Wenn Sie Einstellungen auf Dateiebene wie "Whitespace vs. Tabs" freigeben möchten, sollten Sie sich stattdessen eine Editor-übergreifende Lösung wie EditorConfig ansehen .
Tanz87
2
Dieses Verzeichnis hat ein Unterverzeichnis "chrome" von 80 MB Größe. Sind Sie sicher, dass dies in das Repository übernommen werden sollte?
Ygoe
10
Sie dürfen VSCode nicht für so etwas wie ein Python-Projekt verwenden, bei dem die Arbeitsbereichseinstellungen umgebungsspezifische Python-Pfade für Dinge wie VirtualEnv- oder Anaconda-Umgebungen enthalten. Das Einchecken dieser Dateien klingt in den meisten Szenarien nach einem großen Problem. Checken Sie stattdessen eine Beispiel- / Standarddatei ein.
StefanGordon
3
Follow-symbols.json
up
39

Zwischen Festschreiben / Ignorieren gibt es eine dritte clevere Option: Festschreiben mit .defaultSuffix.

Zum Beispiel können Sie hinzufügen settings.jsonzu .gitignore, und begehen settings.json.default, ähnlich wie es übliche Praxis (in meinem Team) ist mit.env Dateien.

Ich habe diesen Rat von den Einstellungen des Video- Commit-Editors zur Versionskontrolle übernommen. von Mattias Petter Johansson

Tymek
quelle
5
A settings.json.defaultist sinnvoll, setzt jedoch voraus, dass Ihr gesamtes Team vs-Code verwendet und Ihre Codebasis nicht einem breiteren Publikum zugänglich gemacht wird. Ich finde, dass meine Open Source-Projekte auf GitHub nur sicherstellen, dass ich sie meinem Standard-Gitignore hinzufüge, da ich meinen potenziellen Benutzern meiner Codebasis keine bestimmte IDE aufzwingen möchte.
Jamescampbell
2
@jamescampbell Durch das Hinzufügen von IDE-spezifischen Dateien wird diese IDE fast nie jemandem aufgezwungen. Sie haben lediglich die Möglichkeit, Ihre allgemeinen Umgebungseinstellungen abzurufen, wenn sie diese IDE verwenden. Die größere Frage ist, ob diese Dateien offiziell unterstützt werden - dh immer auf dem neuesten Stand sein und funktionieren sollen. Theoretisch könnten mehrere IDE-Umgebungsdateien für verschiedene IDEs ohne Konflikte vorhanden sein.
LightCC
23
  • niemals begehen .vscode/settings.json- mit der seltsamen Ausnahme von search.exclude. Wenn Sie wirklich müssen, sehr vorsichtig sein , setzen nur Einstellungen insbesondere des Projekts , die Sie wollen erzwingen zu anderen Entwicklern.
  • für die Validierung, Formatierung, Erstellung Verwendung andere Dateien wie package.json, .eslint, tsconfig.jsonusw.
  • Der einzige .vscode, der sinnvoll ist, sind komplexe Startkonfigurationen für das Debuggen.
  • Seien Sie vorsichtig, es könnte eine Erweiterung eines Drittanbieters in Ihrem System geben, die private Informationen dort ablegen könnte!

Was Sie nicht tun können, ist die gesamte Inhaltsdatei settings.json zu kopieren und einzufügen .vscode/settings.json. Ich sehe einige Leute, die dies tun, und das Festschreiben der Datei ist eine Gräueltat. In diesem Fall unterbrechen Sie nicht nur den Arbeitsbereich anderer, sondern erzwingen auch Einstellungen für Benutzer, die Sie nicht mögen sollten: Ästhetik, Benutzeroberfläche und Erfahrung. Sie werden wahrscheinlich ihre Umgebungen beschädigen, da einige sehr systemabhängig sind. Stellen Sie sich vor, ich habe Sehprobleme, daher werden meine editor.*Benutzereinstellungen personalisiert, und wenn ich Ihr Projekt öffne, ändern sich die visuellen Elemente. Stellen Sie sich vor, ich habe Sehprobleme. Ich muss den Benutzereditor personalisieren. * Einstellungen, um arbeiten zu können. Ich wäre wütend

Wenn Sie es ernst meinen, verpflichten Sie sich nicht .vscode/settings.json. Im Allgemeinen sind Einstellungen sinnvoll, die für ein bestimmtes Projekt nützlich sein können, z. B. Validierung und Kompilierung. Im Allgemeinen können Sie jedoch bestimmte Tools-Konfigurationsdateien wie .eslint, tsconfig.json, .gitignore, package.json verwenden. usw. Ich denke, die Autoren von vscode haben gerade die Datei hinzugefügt, um die Erfahrung von Neulingen zu vereinfachen, aber wenn Sie es ernst meinen wollen, tun Sie es nicht!

Die einzige Ausnahme und in ganz bestimmten Fällen könnte search.exclude sein

Cancerbero
quelle
3
Ich halte Ihren Vorschlag für .vscode/settingszu restriktiv. Verwenden Sie .eslintoder .editorconfigDateien, wenn Sie können, aber Sie sollten trotzdem einchecken, .vscode/settingsob Sie wirklich möchten, dass eine Einstellung für alle Entwickler eines Teams / Projekts freigegeben wird
Matt Bierner
3
Matt, warum nimmst du an, dass alle anderen Entwickler vscode verwenden? Könnten Leute sein, die Webstorm, Vim, Sublime verwenden. Deshalb sollten Sie mit Eslint usw. arbeiten und nicht mit settings.json.
Cancerbero
Auch hier ist das Einchecken .vscode/settingssinnvoll, wenn Sie in einem Team arbeiten, das vscode verwendet, oder wenn Sie an einem Projekt arbeiten, in dem viele Entwickler vscode verwenden. Nicht alle dieser Einstellungen haben Cross-Editor-Entsprechungen
Matt Bierner
@ MattBierner fair genug, wenn Sie Close-Source-Projekte in einem Unternehmen entwickeln, das den Editor erzwingt, aber ich denke nicht, dass dies eine häufige Situation ist und speziell in Open-Source-Projekten ...
Cancerbero
Der Punkt zu Erweiterungen von Drittanbietern ist sehr gültig. Als Beispiel glaube ich, dass die MS SQL-Erweiterung Verbindungsprofile zu den Projekt- / Arbeitsbereichseinstellungen.json hinzufügt, falls vorhanden. Obwohl keine Anmeldeinformationen gespeichert werden, werden möglicherweise Servernamen usw. Eingecheckt .
Dan Harris
17

Andere Antworten zusammenfassen

  • Es wird empfohlen, .vscodeOrdner generell auszuschließen , jedoch einige ausgewählte JSON-Dateien zu belassen, mit denen Teammitglieder Einstellungen neu erstellen können

Zu verwendender Beispielcode .gitignore(und wo er erhältlich ist)

Hier sind die Einstellungen, wie unter https://gitignore.io vorgeschlagen . Sie können dort nach "VisualStudioCode" suchen, um die neueste empfohlene .gitignoreDatei zu erhalten. Ich benutze diese Website als Ausgangspunkt .gitignorefür die meisten meiner neuen Repos:

# 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

In der obigen .gitignoreDatei, die .vscode/*sagt Linie alles im ausschließen .vscodeOrdner, aber dann die !.vscode/a_specific_filetell Linien git auf „nicht“ einige bestimmten Dateien in diesem Ordner ignorieren ( settings.json, launch.jsonusw.). Das Endergebnis ist, dass alles im .vscodeOrdner ausgeschlossen ist, mit Ausnahme der Dateien, die in einer dieser anderen Zeilen speziell benannt sind.


Andere Faktoren und wie Sie es selbst herausfinden können ...

Das Einfügen des .vscodeOrdners in Ihr Repo schadet niemandem, der eine andere IDE (oder einen anderen Text- / Code-Editor) verwendet.

Es kann jedoch anderen Personen, die VS-Code verwenden, schaden, wenn diese Dateien allgemeine Einstellungen enthalten, für die eine bestimmte Umgebung erforderlich ist, die sich in ihrer Umgebung unterscheidet - beispielsweise der absolute Pfad, in dem das Repo installiert ist (in den die VS-Code-Python-Erweiterung konsistent eingibt) das pythonpathin .vscode/settings.json). Der Schlüssel besteht darin, das Speichern von Einstellungen zu vermeiden, die für Ihre lokale Umgebung benutzerdefiniert sind, und nur diejenigen freizugeben, die von allen verwendet werden können.

Wenn IDE-Einstellungsdateien beispielsweise absolute Pfade zum Repo oder zu Dateien / Bibliotheken usw. haben, ist dies schlecht. Teilen Sie diese nicht. Wenn jedoch alle Referenzen relativ sind, sollten sie für jeden funktionieren, der das Repo verwendet (achten Sie jedoch auf Unterschiede bei der Pfadspezifikation zwischen Windows / Unix ..).


Hinweis zu den Einstellungen für Benutzer, Arbeitsbereich und Ordner

Hinweis: Die Einstellungsdateien im .vscodeOrdner werden im Allgemeinen nur aktualisiert, wenn Sie Änderungen an der Ordnerversion der Einstellungen vornehmen (es scheint gelegentlich Ausnahmen zu geben).

  • Wenn Sie Änderungen an den Benutzereinstellungen vornehmen, werden diese an anderer Stelle gespeichert.
  • Wenn Sie Änderungen an den Arbeitsbereichseinstellungen vornehmen, werden diese normalerweise in dem *.code-workspaceOrdner gespeichert , den Sie gerade verwenden (manchmal werden sie immer noch in den Ordnereinstellungsdateien abgelegt - Sie können sie jedoch manuell verschieben!).

Dies bedeutet, dass Sie benutzerdefinierte Einstellungen für Ihren persönlichen PC in die Benutzereinstellungen und generische Einstellungen für ein bestimmtes Projekt / Paket in die anderen Einstellungen einfügen sollten, wann immer dies möglich ist.

  • Ich habe bemerkt , dass , wenn die Python - Erweiterung verwenden, die .vscode/settings.jsonDatei (das spart Ordner Einstellungen) speichert immer den absoluten Pfad unter der pythonpathEinstellung, so dass ich seinen Ausschluß aus meiner entfernt habe .gitignoreDateien und nicht mehr speichern Sie es auf meinen Python repos. Selbst wenn ich es mit einem relativen Pfad speichere, setzt VS Code es einfach auf den absoluten Pfad zurück.
  • Stattdessen speichere ich einfach jeden Ordner, den ich in Code als Arbeitsbereich verwenden muss (z. B. Erstellen einer myproject.code-workspaceDatei mit Datei -> Arbeitsbereich speichern unter . Auf diese Weise können Sie steuern, was in die Arbeitsbereichsdatei aufgenommen wird, und sie im Repo speichern, während Sie sie ausschließen Die Ordnereinstellungsdatei ( .vscode/settings.json). Sie können so ziemlich jede Einstellung zwischen den Arbeitsbereichs- und Ordnereinstellungsdateien verschieben, um zu steuern, was gespeichert wird und was nicht. Denken Sie jedoch daran, dass die Arbeitsbereichsdatei alles in der Ordnereinstellungsdatei überschreibt.

Das lange und kurze daran ist: Sie können einfach eine Arbeitsbereichsdatei verwenden und alle allgemeinen Einstellungen darin ablegen, während Sie lokale Einstellungen in die Ordnereinstellungsdatei einfügen, zumindest für Python. Andere Sprachen können einem anderen Muster folgen.

Natürlich können Sie auch andere Gründe für das Speichern der .vscode/settings.jsonDatei oder eines Teils davon haben. Oder dies ist möglicherweise kein Problem für die Einstellungen in Ihrer aktuellen Sprache.

Ihr Kilometerstand kann variieren ...

LightCC
quelle
10

Warum nicht einfach die Praxis betrachten, abgesehen von den Argumenten hier?

Eines der größten Projekte, das .vscodeich bisher gefunden habe, ist Mozilla Firefox . Es sieht so aus, als ob das Firefox-Team seine gemeinsamen Aufgaben und empfohlenen Erweiterungen teilt .

Ich denke, es ist keine schlechte Idee, sie zu behalten .vscode, solange Sie wissen, was Sie tun.

Ich werde diesen Beitrag aktualisieren, wenn ich andere große Projekte sehe, die sich teilen .vscode.

Bumsik Kim
quelle
8

Gleich wie andere Antworten: nein.

Betrachten Sie zur Veranschaulichung den von Git 2.19 (Q3 2018) gewählten Ansatz, bei dem ein Skript (in contrib/) hinzugefügt wird, damit Benutzer von VSCode besser mit der Git-Codebasis arbeiten können.

Mit anderen Worten, generieren Sie den .vscodeInhalt (falls er noch nicht vorhanden ist) und versionieren Sie ihn nicht.

Siehe Commit 12861e2 , Commit 2a2cdd0 , Commit 5482f41 , Commit f2a3b68 , Commit 0f47f78 , Commit b4d991d , Commit 58930fd , Commit dee3382 , Commit 54c06c6 (30. Juli 2018) von Johannes Schindelin ( dscho) .
(Zusammengeführt von Junio ​​C Hamano - gitster- in Commit 30cf191 , 15. August 2018)

contrib: Fügen Sie ein Skript hinzu, um die VS-Code-Konfiguration zu initialisieren

VS Code ist ein leichter, aber leistungsstarker Quellcode-Editor, der auf Ihrem Desktop ausgeführt wird und für Windows, MacOS und Linux verfügbar ist.
Unter anderem wird C / C ++ über eine Erweiterung unterstützt, mit der nicht nur der Code erstellt und debuggt werden kann, sondern auch Intellisense, dh codebewusste Vervollständigung und ähnliche Besonderheiten.

Dieser Patch fügt ein Skript hinzu, mit dessen Hilfe die Umgebung so eingerichtet werden kann, dass sie effektiv mit VS Code funktioniert: Führen Sie einfach das Unix-Shell-Skript aus contrib/vscode/init.sh, mit dem die relevanten Dateien erstellt werden, und öffnen Sie den Ordner der obersten Ebene des Git-Quellcodes in VS Code .

VonC
quelle
1

Die Antwort lautet "NEIN", da der Ordner " .vscode " für diesen Editor bestimmt ist und Sie diese persönlichen Einstellungen nicht zum Repo verschieben sollten, wenn andere verwirrt werden. Sie können sie daher zur .gitignore- Datei Ihres Projekts hinzufügen , um die Änderungen zu ignorieren

Jialin Wang
quelle
17
Ich würde Ihrer strengen Haltung nicht zustimmen. Wie in der Antwort von @BenjaminPasero erwähnt, müssen Sie dies nicht tun, aber es ist in vielen Fällen sinnvoll, z. B. die Konfiguration von Aufgaben gemeinsam zu nutzen. Natürlich ist es gut, auf seine Teamkollegen zu achten und ihnen nicht unnötig Präferenzen aufzuzwingen.
Ronald Zarīts
Ja, aus diesem Grund haben wir separate Benutzereinstellungen und Arbeitsbereichseinstellungen (die .vscode/settings.jsonDatei in einem Arbeitsbereich): code.visualstudio.com/docs/getstarted/… Nur Dinge wie die Werkzeugkonfiguration werden in die Arbeitsbereichseinstellungen aufgenommen
Matt Bierner
Im Ordner. Ronaldscarīts .vscode geht es um die Einstellungen und Codestile Ihres eigenen Editors. Ich denke, er ist nur für den eigenen Gebrauch bestimmt. Schieben Sie den Ordner also, wie bereits erwähnt, nicht in den Git-Kontrollfluss.
Jialin Wang
6
@jialinwang Sorry, das habe ich schon gemacht. ;) Spaß beiseite, es enthält auch Elemente, die zum Teilen nützlich sind, zum Beispiel haben wir in meinem Projekt (1) launch.json- Startkonfigurationen für das Debuggen, deren Einrichtung nicht trivial sein kann. (2) settings.jsonEinstellungen auf Projektebene, wie der zu verwendende TypeScript-Compiler, Leerzeichenregeln, (3) tasks.json- Build-Befehle. Sie können wählen, nicht zu teilen, aber wir finden es nützlich.
Ronald Zarīts
@jialinwang Nein, sind sie nicht. Dies sind Einstellungen auf Ordnerebene. Sie sollten nicht nur die oberste Ebene einschließen, wenn Sie Einstellungen für Unterordner haben, sondern auch diese einschließen. Wichtig ist, dass Sie Ihre Benutzereinstellungen nicht in den Einstellungen auf Ordnerebene speichern (dies ist auch aus anderen Gründen wichtig). Die Art der Dinge, die Sie in Ihren Einstellungen auf Ordnerebene haben sollten, sollte für den gesamten Ordner gelten: Formatierer, Linters, Leerzeichenkonventionen (z. B. endgültige nachfolgende neue Zeilen
kürzen
1

Eine einfache Möglichkeit, Ihre Einstellungen beizubehalten, ohne sie in Ihrem Projekt-Git-Repository festzuschreiben, besteht darin, einen Arbeitsbereich zu erstellen und einen Ordner hinzuzufügen.

Wenn Sie einen Arbeitsbereich erstellen, müssen Sie eine Datei speichern code-workspace. Diese Datei enthält die benutzerdefinierten Einstellungen, nur Speichern Sie diese Datei aus dem Git - Repository und wird frei hinzuzufügen sein .vscodein .gitignoreDatei.

Wendel
quelle