Czy powinienem przekazać folder .vscode do kontroli źródła?

294

Czy .vscodefolder ma podlegać kontroli źródła?

W świeżym projekcie folder jest pusty, z wyjątkiem settings.jsonpliku. Jakie rzeczy trafiłyby do tego folderu? Czy jest to specyficzne dla komputera, specyficzne dla programisty, podobnie jak .vsfolder, a zatem nie jest zatwierdzane ? A może wszyscy programiści powinni udostępnić ten folder i dlatego należy go zatwierdzić?

Komentarz na górze pliku .vscode/settings.jsonstwierdza:

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

Wydaje się to sugerować, że folder powinien zawierać ustawienia specyficzne dla projektu, a tym samym być dołączony do źródła. Wydaje się , że ten post na UserVoice sugeruje, że będą tam wpisywane pewne typy, sugerując również, że należy go popełnić.

Ronald Zarīts
źródło
Jeśli uruchamiasz projekt w Visual Studio, a następnie zatwierdzasz go, powinien istnieć właściwy (przynajmniej typowy) start .gitignore FE. Jeśli ma tam być, to prawdopodobnie tak będzie. Możesz również odwołać się do tego, z którego korzystałem bez problemu.
ChiefTwoPencils
2
Dobry pomysł, @ChiefTwoPencils! Dla celów domyślnych, .gitignorektóre tworzy program Visual Studio, .vscodefolder jest obecnie wykluczony. Ale ponieważ VS Code sam w sobie jest raczej nowy, być może jeszcze go nie poznali. Na razie pozostawiłem folder bez śledzenia, gdy otrzymuję więcej informacji na jego temat.
Ronald Zarīts,

Odpowiedzi:

313

Sprawdź w .vscodefolderze, czy chcesz udostępnić zespołowi ustawienia, konfigurację zadania i konfigurację debugowania. Myślę, że ogólnie rzecz biorąc, sensowne jest dzielenie się ustawieniami (np. Białe znaki i tabulatory) z zespołem, jeśli chcesz wymusić ustawienia w zespole. W zespole VS Code dzielimy również ustawienia debugowania i zadania, ponieważ chcemy, aby nasz zespół miał taki sam zestaw celów debugowania i zadań dla VS Code.

Przy okazji nie musisz mieć .vscodefolderu w swoim projekcie do ustawień. Możesz także skonfigurować ustawienia na poziomie użytkownika.

Benjamin Pasero
źródło
54
Dzięki! „My w zespole VS Code ...” jest dla mnie wystarczająco dobre - przynajmniej na początek!
Ronald Zarīts,
97
Jeśli chcesz udostępnić ustawienia na poziomie pliku, takie jak „białe znaki vs. karty”, powinieneś zamiast tego spojrzeć na rozwiązanie dla wielu edytorów, takie jak EditorConfig .
Tanz87
2
Ten katalog ma podkatalog „chrome” o wielkości 80 MB. Czy na pewno należy to przypisać do repozytorium?
ygoe
10
Nie wolno używać VSCode do czegoś takiego jak projekt python, w którym ustawienia obszaru roboczego będą zawierały specyficzne dla środowiska ścieżki python dla rzeczy takich jak VirtualEnv lub Anaconda. Sprawdzanie tych plików w większości przypadków wydaje się ogromnym problemem. Zamiast tego zaznacz plik przykładowy / domyślny.
StefanGordon
3
Nawiązanie na symbols.json: stackoverflow.com/questions/51876769/...
ripper234
39

Pomiędzy zatwierdzaniem / ignorowaniem jest trzecia sprytna opcja: zatwierdzanie z .defaultsufiksem.

Na przykład można dodać settings.jsondo .gitignore, i zobowiązać się settings.json.default, podobnie jak to jest powszechna praktyka (w moim zespole) z .envplikami.

Wziąłem tę radę z ustawień edytora wideo Commit do kontroli wersji? autor: Mattias Petter Johansson

Tymek
źródło
5
Ma settings.json.defaultto sens, ale zakłada się, że cały zespół używa kodu vs, a baza kodów nie jest udostępniana szerszej publiczności. Uważam, że moje projekty open source na GitHub, po prostu upewniam się, że dodałem je do mojego domyślnego gitignore, ponieważ nie chcę wymuszać określonego IDE na moich potencjalnych użytkownikach mojej bazy kodu.
jamescampbell
3
@jamescampbell Dodanie plików specyficznych dla IDE prawie nigdy nie wymusza tego IDE na nikim - daje im to tylko opcję uzyskania wspólnych ustawień środowiska, jeśli zdarzy się, że korzystają z tego IDE. Większe pytanie dotyczy tego, czy pliki te są oficjalnie obsługiwane - tj. Mają być zawsze aktualne i działające. Teoretycznie możesz mieć wiele plików środowiska IDE dla różnych IDE, wszystkie obecne bez żadnych konfliktów.
LightCC
23
  • nigdy nie popełnij .vscode/settings.json- z dziwnym wyjątkiem search.exclude. Jeśli naprawdę musisz, bądź ostrożny, umieszczając tylko te ustawienia projektu, które chcesz wymusić na innych programistach.
  • walidacji, formatowanie obliczania wykorzystuje inne pliki podoba package.json, .eslint, tsconfig.json, etc
  • Jedynym .vscode, który ma sens, aby uwzględnić, są złożone konfiguracje uruchamiania do debugowania.
  • Uważaj, w twoim systemie może znajdować się rozszerzenie strony trzeciej, które może umieszczać tam prywatne informacje!

Nie możesz skopiować i wkleić całego pliku zawartości settings.json do .vscode/settings.json. Widzę, że niektórzy to robią, a popełnianie pliku jest okrucieństwem. W takim przypadku nie tylko zniszczysz inne miejsce pracy, ale, co najgorsze, egzekwujesz ustawienia dla użytkowników, których nie powinna ci się podobać estetyka, interfejs użytkownika, wrażenia. Prawdopodobnie zepsujesz ich środowiska, ponieważ niektóre są bardzo zależne od systemu. Wyobraź sobie, że mam problemy ze wzrokiem, więc moje editor.*ustawienia użytkownika są spersonalizowane, a kiedy otwieram twój projekt, grafika się zmienia. Wyobraź sobie, że mam problemy ze wzrokiem. Muszę spersonalizować ustawienia edytora użytkownika. *, Aby móc pracować. Byłbym zły

Jeśli mówisz poważnie, nie popełniaj .vscode/settings.json. Ogólnie rzecz biorąc, ustawienia, które mogą być przydatne dla konkretnego projektu, takie jak sprawdzanie poprawności, kompilacja, mają sens, ale ogólnie można używać plików konfiguracyjnych określonych narzędzi, takich jak .eslint, tsconfig.json, .gitignore, package.json. itd. Wydaje mi się, że autorzy vscode właśnie dodali ten plik, aby uprościć obsługę nowicjusza, ale jeśli chcesz być poważny, nie rób tego!

Jedynym wyjątkiem, aw bardzo szczególnych przypadkach może być search.exclude

rakbero
źródło
3
Wydaje mi się, że twoja sugestia .vscode/settingsjest zbyt restrykcyjna. Użyj .eslintlub .editorconfigpliki, jeśli możesz, ale nadal powinieneś się zameldować, .vscode/settingsjeśli naprawdę chcesz, aby ustawienie było współużytkowane przez wszystkich programistów w zespole / projekcie
Matt Bierner
3
Matt, dlaczego zakładasz, że wszyscy inni programiści używają vscode? Mogą to być ludzie korzystający z webstorm, vim, sublime, dlatego powinieneś pracować z eslint, itp., A nie settings.json.
cancerbero
Znów sprawdzanie .vscode/settingsma sens, jeśli pracujesz w zespole, który używa vscode lub pracujesz nad projektem, w którym wielu programistów używa vscode. Nie wszystkie z tych ustawień mają odpowiedniki między edytorami
Matt Bierner
@MattBierner dość uczciwie, jeśli opracowujesz projekty bliskiego źródła w firmie, która wymusza redaktor, ale nie sądzę, że jest to powszechna sytuacja i szczególnie w projektach open source ...
cancerbero
Punkt dotyczący rozszerzeń stron trzecich jest bardzo ważny - na przykład uważam, że rozszerzenie MS SQL doda profile połączenia do projektu / obszaru roboczego.j.j, jeśli istnieje - chociaż nie przechowuje poświadczeń, może sprawdzać nazwy serwerów itp. .
Dan Harris
18

Podsumowując inne odpowiedzi

Zaleca się, aby zasadniczo wykluczyć .vscodefolder, ale pozostaw wybrane pliki JSON, które pozwalają innym programistom na odtworzenie wspólnych ustawień.

Przykłady ustawień, które należy uwzględnić:

  • Konfiguracje testów specyficzne dla języka do uruchamiania pakietów testowych ( settings.json)
  • Ustawienia rozszerzeń dla narzędzi i narzędzi do formatowania kodu w celu wymuszenia reguł językowych używanych w tym repozytorium ( settings.json)
  • Konfiguracje uruchamiania i debugowania ( launch.json)
  • Zadania współdzielone - jeśli zarządzane za pomocą VS Code ( tasks.json)

Pamiętaj, że niektóre ustawienia można zapisać w pliku obszaru roboczego lub przenieść do niego z folderu .vscode. Patrz poniżej.


Przykładowy .gitignorekod do użycia (i gdzie go zdobyć)

Oto ustawienia, jak sugerowano na https://gitignore.io . Możesz tam wyszukać „VisualStudioCode”, aby uzyskać najnowszy zalecany .gitignoreplik. Używam tej strony jako punktu wyjścia .gitignoredla większości moich nowych repozytoriów:

# 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

W powyższym .gitignorepliku, .vscode/*linia mówi wykluczyć wszystko w .vscodefolderze, ale wtedy !.vscode/a_specific_filelinii powiedz git na „nie” ignorować pewne konkretne pliki w tym folderze ( settings.json, launch.json, itd.). Rezultat końcowy jest taki, że wszystko jest wykluczone w .vscodefolderze, z wyjątkiem plików specjalnie nazwanych w jednym z tych innych wierszy.


Inne czynniki i jak się przekonać ...

Dołączenie .vscodefolderu do repozytorium nie zaszkodzi nikomu, kto używa innego IDE (lub edytora tekstu / kodu).

Może jednak zaszkodzić innym osobom korzystającym z VS Code, jeśli pliki te zawierają ogólne ustawienia, które wymagają czegoś specyficznego dla twojego środowiska, które jest inne w ich środowisku - np. Bezwzględna ścieżka, w której repo jest zainstalowane (w którym rozszerzenie VS Code Python konsekwentnie wprowadza pythonpathw .vscode/settings.json). Kluczem jest unikanie zapisywania ustawień dostosowanych do lokalnego środowiska, udostępniając tylko te, z których mogą korzystać wszyscy.

Na przykład, jeśli pliki ustawień IDE mają bezwzględne ścieżki do repozytorium lub plików / bibliotek itp., To źle, nie udostępniaj. Ale jeśli wszystkie referencje są względne, powinny działać dla każdego, kto korzysta z repozytorium (choć uważaj na różnice specyfikacji ścieżek między Windows / Unix ..).


Informacje o ustawieniach użytkownika, obszaru roboczego i folderu

Uwaga: pliki ustawień w .vscodefolderze są generalnie aktualizowane tylko po wprowadzeniu zmian w wersji ustawień folderu (wydaje się jednak, że istnieje wiele wyjątków).

  • Jeśli wprowadzisz zmiany w ustawieniach użytkownika , zwykle są one przechowywane w innym miejscu.
  • Jeśli wprowadzisz zmiany w ustawieniach obszaru roboczego , zwykle są one przechowywane w *.code-workspacefolderze, którego aktualnie używasz (nadal często przechodzą do plików ustawień folderów - ale możesz je ręcznie przenieść!).

Oznacza to, że należy umieścić własne ustawienia dla Twojego osobistego komputera do użytkownika ustawień i umieścić te ogólne dla określonego projektu / pakiet do innych, w miarę możliwości.

  • Zauważyłem, że podczas korzystania z rozszerzenia Python .vscode/settings.jsonplik (który zapisuje ustawienia folderów ) zawsze zapisuje ścieżkę bezwzględną pod tym pythonpathustawieniem, więc usunąłem jego wykluczenie z moich .gitignoreplików i nie zapisuję go już na moich repozytoriach Python. Nawet jeśli zapiszę go ze ścieżką względną, VS Code po prostu zresetuje go do ścieżki bezwzględnej.
  • Zamiast tego po prostu zapisuję dowolny folder, którego muszę użyć w Kodzie jako obszar roboczy (np. Tworzę myproject.code-workspaceplik za pomocą Plik -> Zapisz obszar roboczy jako . W ten sposób możesz kontrolować, co wchodzi do pliku obszaru roboczego i zapisać go w repozytorium, wykluczając plik ustawień folderów ( .vscode/settings.json). Możesz dowolnie przenosić dowolne ustawienia między obszarem roboczym a plikami ustawień folderów, aby kontrolować, co zostanie zapisane, a co nie. Pamiętaj, że plik obszaru roboczego zastąpi wszystko w pliku ustawień folderu.

Krótko mówiąc - możesz po prostu użyć pliku obszaru roboczego i umieścić w nim najczęściej używane ustawienia, jednocześnie umieszczając ustawienia lokalne w pliku ustawień folderu, choć wydaje się, że zależy to od używanych rozszerzeń / języków.

Oczywiście możesz mieć inne powody, dla których chcesz zapisać .vscode/settings.jsonplik lub jego część. Lub może to nie stanowić problemu dla ustawień w twoim obecnym języku.

Twój przebieg może się różnić ...

LightCC
źródło
10

Dlaczego nie spojrzeć na praktykę, oprócz argumentów tutaj?

Jednym z największych projektów, .vscodektóre dotąd odkryłem, jest Mozilla Firefox . Wygląda na to, że zespół Firefoksa dzieli wspólne zadania i zalecane rozszerzenia.

Sądzę więc, że nie jest to zły pomysł .vscode, jeśli tylko wiesz, co robisz.

Zaktualizuję ten post, gdy zobaczę inne duże projekty, które udostępniają .vscode.

Bumsik Kim
źródło
8

Tak samo jak inne odpowiedzi: nie.

Jako przykład rozważmy podejście wybrane przez Git 2.19 (III kwartał 2018), które dodaje skrypt (in contrib/), aby pomóc użytkownikom VSCode w lepszej pracy z bazą kodową Git.

Innymi słowy, wygeneruj .vscodetreść (jeśli jeszcze nie istnieje), nie wersjonuj jej.

Zobacz zatwierdzenie 12861e2 , zatwierdzenie 2a2cdd0 , zatwierdzenie 5482f41 , zatwierdzenie f2a3b68 , zatwierdzenie 0f47f78 , zatwierdzenie b4d991d , zatwierdzenie 58930fd , zatwierdzenie dee3382 , zatwierdzenie 54c06c6 (30 lipca 2018 r.) Przez Johannes Schindelin ( dscho) .
(Połączone przez Junio ​​C Hamano - gitster- w commit 30cf191 , 15 sierpnia 2018)

contrib: dodaj skrypt, aby zainicjować konfigurację kodu VS.

VS Code to lekki, ale potężny edytor kodu źródłowego, który działa na pulpicie i jest dostępny dla systemów Windows, macOS i Linux.
Między innymi obsługuje C / C ++ poprzez rozszerzenie, które oferuje nie tylko budowanie i debugowanie kodu, ale także Intellisense, tj. Uzupełnianie z uwzględnieniem kodu i podobne elementy.

Ta poprawka dodaje skrypt, który pomaga skonfigurować środowisko do efektywnej pracy z VS Code: po prostu uruchom skrypt powłoki Unix contrib/vscode/init.sh, który tworzy odpowiednie pliki, i otwórz folder najwyższego poziomu kodu źródłowego Gita w VS Code .

VonC
źródło
1

Odpowiedź brzmi „NIE”, ponieważ folder .vscode jest przeznaczony dla tego edytora i nie należy wypychać tych ustawień osobistych w celu repozytorium w przypadku mylenia innych, aby można je było dodać do pliku .gitignore projektu, aby zignorować zmiany

Jalin Wang
źródło
17
Nie zgodziłbym się z twoją surową postawą. Jak wspomniano w odpowiedzi @BenjaminPasero, nie musisz, ale ma to sens w wielu przypadkach, np. Współdzielenie konfiguracji zadania. Oczywiście dobrze jest pamiętać o kolegach z drużyny i niepotrzebnie narzucać im preferencje.
Ronald Zarīts,
Tak, dlatego mamy oddzielne ustawienia użytkownika i ustawienia obszaru roboczego ( .vscode/settings.jsonplik w obszarze roboczym): code.visualstudio.com/docs/getstarted/... Tylko ustawienia takie jak konfiguracja narzędzia wchodzą w ustawienia obszaru roboczego
Matt Bierner
@ Folder .vscode RonaldaZarītsa dotyczy ustawień twojego edytora i stylów kodu, myślę, że jest to tylko na własny użytek, więc, jak powiedziałem wcześniej, nie wypychaj folderu, aby uzyskać kontrolę przepływu.
jialin wang
6
@jialinwang Przepraszamy, już to zrobiłem. ;) Żarty na bok, zawiera również elementy, które są przydatne do udostępnienia, na przykład w moim projekcie mamy (1) launch.json- uruchom konfiguracje do debugowania, których konfiguracja może być łatwa. (2) settings.jsonustawienia na poziomie projektu, takie jak kompilator TypeScript do użycia, reguły białych znaków, (3) tasks.json- komendy budowania. Możesz nie udostępniać, ale uważamy to za przydatne.
Ronald Zarīts,
@jialinwang Nie, nie są. Są to ustawienia na poziomie folderów. Powinieneś dołączyć nie tylko najwyższy poziom, ale jeśli masz jakieś ustawienia specyficzne dla podfolderów, powinieneś je również uwzględnić. Ważne jest, aby zachować preferencje użytkownika poza ustawieniami na poziomie folderu (jest to ważne również z innych powodów). Rzeczy, które powinieneś mieć w ustawieniach na poziomie folderu, powinny mieć zastosowanie do całego folderu: formatters, linters, konwencja białych znaków (np.
Przycinanie
1

Prostym sposobem na zachowanie ustawień bez zatwierdzania ich w repozytorium git projektu jest utworzenie obszaru roboczego i dodanie do niego folderu.

Kiedy tworzysz przestrzeń roboczą, musisz zapisać plik code-workspace. Ten plik zawiera niestandardowe ustawienia, po prostu zapisz ten plik z repozytorium git i będzie można go dodać .vscodedo .gitignorepliku.

Wendel
źródło