Чи потрібно вчинити папку .vscode для управління джерелом?


295

Чи .vscodeпапка призначена для управління джерелом?

У новому проекті папка порожня, крім settings.jsonфайлу. Які речі потрапляли б у цю папку? Це машина, специфічна для розробника, як .vsпапка, і, таким чином, не буде вчинена? Чи повинні всі розробники поділяти цю папку, і, таким чином, вона повинна бути виконана?

У коментарі вгорі файлу .vscode/settings.jsonзазначено:

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

Це, мабуть, означає, що папка повинна містити налаштування, що стосуються конкретного проекту, і, таким чином, бути включеною до джерела. Крім того, ця публікація на UserVoice, мабуть, передбачає, що деякі типи будуть входити туди, що також передбачає, що її слід виконувати.


Якщо ви запускаєте проект у Visual Studio, а потім здійснюєте його, слід створити належний (принаймні типовий) .gitignore FE. Якщо це задумане бути там, це, мабуть, буде. Ви також можете посилатися на це, яке я використав без проблем.
ChiefTwoPencils

2
Гарна ідея, @ChajaTwoPencils! Для запису за умовчанням, .gitignoreякий створює Visual Studio, .vscodeу цей момент часу виключена папка. Але оскільки VS Code є досить новим, вони, можливо, ще не до цього дійшли. Наразі я залишив папку без розгляду, поки я отримаю більше інформації про неї.
Рональд Заріць

Відповіді:


314

Перевірте в .vscodeпапці, якщо ви хочете поділитися налаштуваннями, конфігурацією завдання та конфігурацією налагодження з командою. Я думаю, що взагалі має сенс ділитися налаштуваннями (наприклад, пробіли проти вкладок) з командою, якщо ви хочете застосувати налаштування в команді. Ми в команді VS Code ділимось налаштуваннями налагодження та завданнями, оскільки ми хочемо, щоб наша команда мала однаковий набір налагоджувальних цілей та цілей завдань для VS Code.

До речі, вам не потрібно мати .vscodeпапку у своєму проекті для налаштувань. Ви також можете налаштувати налаштування на рівні користувача.


54
Дякую! "Ми в команді Кодексу VS ..." для мене досить добре - принаймні для початку!
Рональд Заріць

97
Якщо ви хочете поділитися налаштуваннями на рівні файлів, такими як "пробіли та вкладки", замість цього слід переглянути рішення для редагування крос-редактора, наприклад EditorConfig .
Tanz87

2
У цьому каталозі є підкаталог "хром" розміром 80 Мб. Ви впевнені, що це має бути пов’язано з сховищем?
ygoe

10
Ви не повинні використовувати VSCode для чогось подібного до проекту python, де налаштування робочої області матимуть специфічні для середовища шляхи python для таких речей, як середовища VirtualEnv або Anaconda. Перевірка цих файлів звучить як величезна проблема для більшості сценаріїв. Перевірте замість цього файл зразка / за замовчуванням.
Стефан Гордон


39

Між фіксацією / ігноруванням є третій розумний варіант: зробити комфілікс із .defaultсуфіксом.

Наприклад, ви можете додавати settings.jsonдо файлів .gitignoreі робити їх так settings.json.default, як це звичайна практика (у моїй команді) з .envфайлами.

Цю пораду я взяв із налаштувань редактора відеозв'язку для контролю версій? по Маттіас Petter Johansson


5
Це settings.json.defaultмає сенс, але це якщо припустити, що вся ваша команда використовує vs код, а ваша кодова база не надається широкій аудиторії. Я вважаю, що мої проекти з відкритим кодом на GitHub, я просто переконуюсь, що я додаю його до свого gitignore за замовчуванням, тому що я не хочу форсувати конкретний IDE на своїх потенційних користувачів моєї бази даних.
jamescampbell

3
@jamescampbell Додавання специфічних для IDE файлів майже ніколи не примушує цього IDE до кого-небудь - це просто дає їм можливість отримати ваші загальні налаштування середовища, якщо вони дійсно використовують цей IDE. Велике питання полягає в тому, чи офіційно підтримуються ці файли - тобто призначені для того, щоб вони завжди були актуальними та працювали. Теоретично у вас може бути декілька файлів середовища IDE для різних присутніх IDE без будь-яких конфліктів.
LightCC

23
  • ніколи не вчиняйте .vscode/settings.json- за дивним винятком search.exclude. Якщо вам дійсно потрібно, будьте дуже обережні, розміщуючи лише налаштування вашого проекту, які ви хочете застосувати іншим розробникам.
  • для перевірки, форматування, використання компіляції інших файли , такі як package.json, .eslint, tsconfig.jsonі т.д.
  • Єдиний .vscode, який має сенс включати, - це складні конфігурації запуску для налагодження.
  • Будьте уважні, у вашій системі може бути розширення третьої сторони, яке може розміщувати там приватну інформацію!

Що ви не можете зробити, це скопіювати та вставити весь файл вмісту settings.json у .vscode/settings.json. Я бачу, як деякі люди роблять це, і вчинення файлу - це жорстокість. У такому випадку ви не тільки будете порушувати робочу область інших людей, але й найгірше, ви будете застосовувати налаштування для користувачів, яким вам не сподобається естетика, інтерфейс, досвід. Ви, ймовірно, порушите їхнє середовище, оскільки деякі дуже залежать від системи. Уявіть, що у мене проблеми із зором, тому мої editor.*налаштування користувача персоналізуються, і коли я відкриваю ваш проект, образи змінюються. Уявіть, що у мене проблеми із зором, - мені потрібно персоналізувати редактор користувача. * Налаштування, щоб мати можливість працювати. Я був би злий.

Якщо ви серйозно, не займайтеся .vscode/settings.json. Загалом, параметри, які можуть бути корисні для конкретного проекту, наприклад перевірка, компіляція, мають сенс, але в цілому ви можете використовувати такі конфігураційні файли інструментів, як .eslint, tsconfig.json, .gitignore, package.json. Я думаю, автори vscode просто додали файл для спрощення досвіду для новачків, але якщо ви хочете бути серйозним, не варто!

Єдиним винятком, і в дуже конкретних випадках, може бути search.exclude


3
Я вважаю, що ваша пропозиція щодо .vscode/settingsзанадто обмежує. Використовуйте .eslintабо .editorconfigфайли, якщо можете, але все ж слід перевірити, .vscode/settingsчи дійсно ви хочете, щоб налаштування
ділилося

3
Метт, чому ти вважаєш, що всі інші розробники використовують vscode? Можливо, люди, які використовують веб-шторм, vim, sublime, тому вам слід працювати з eslint тощо, а не settings.json.
rakabero

Знову ж таки, перевірка .vscode/settingsмає сенс, чи працюєте ви над командою, яка використовує vscode, або ви працюєте над проектом, де багато розробників використовують vscode. Не всі ці налаштування мають еквіваленти між редакторами
Метт Бірнер

@MattBierner досить справедливо, якщо ви розробляєте проекти з тісними джерелами в компанії, яка застосовує редактор, але я не думаю, що це звичайна ситуація, і особливо в проектах з відкритим кодом ...
Cancebero

Суть щодо розширень сторонніх розробників дуже справедлива. Як приклад, я вважаю, що розширення MS SQL додасть профілі підключення до проекту / робочої області settings.json, якщо він існує - Хоча він не зберігає облікові дані, він може перевіряти імена серверів тощо .
Ден Харріс

18

Підбиття підсумків інших відповідей

Рекомендація полягає в тому, щоб загалом виключити .vscodeпапку, але залишити вибрані файли JSON, які дозволяють іншим розробникам відтворювати спільні налаштування.

Приклади налаштувань для включення:

  • Спеціальні тестові конфігурації для запуску тестових наборів ( settings.json)
  • Налаштування розширення для лінерів та інструментів форматування коду для забезпечення використання мовних правил, що використовуються в цьому репо ( settings.json)
  • Запуск та налагодження конфігурацій ( launch.json)
  • Спільні завдання - якщо ними керується за допомогою VS Code ( tasks.json)

Зауважте, що деякі параметри можна зберігати у файлі робочої області або переносити до нього з папки .vscode. Дивись нижче.


Приклад .gitignoreкоду для використання (і де його отримати)

Ось налаштування, як запропоновано на https://gitignore.io . Ви можете шукати "VisualStudioCode" там, щоб отримати останній рекомендований .gitignoreфайл. Я використовую цей веб-сайт як вихідний пункт .gitignoreдля більшості моїх нових репост:

# 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

У наведеному вище .gitignoreфайлі, то .vscode/*рядок говорить , щоб виключити всі , що в .vscodeпапці, але тоді !.vscode/a_specific_fileрядки говорять мерзотник , щоб «не» ігнорувати деякі конкретні файли в цій папці ( settings.json, launch.jsonі т.д.). Кінцевим результатом є те, що в .vscodeпапці виключається все, крім файлів, спеціально названих в одному з цих інших рядків.


Інші фактори та як зрозуміти для себе ...

Включення .vscodeпапки до репо-файлу насправді не шкодить тому, хто використовує інший IDE (або редактор тексту / коду).

Однак це може зашкодити іншим, хто використовує код VS, якщо ці файли містять загальні параметри, які вимагають чогось конкретного для вашого оточення, що відрізняється від їхнього оточення - наприклад, абсолютний шлях, в який встановлено репо (в яке розширення VS Code Python послідовно вкладається pythonpathв .vscode/settings.json). Головне - уникати збереження налаштувань, пристосованих до вашого локального середовища, лише обміну тими, які можуть використовувати всі.

Наприклад, якщо файли налаштування IDE мають абсолютні шляхи до репо або будь-яких файлів / бібліотек тощо, це погано, не діліться ними. Але якщо всі посилання відносні, вони повинні працювати для всіх, хто використовує репо (хоча, будьте уважні щодо відмінностей у специфікації шляху між Windows / Unix ..).


Про налаштування користувача, робочої області та папки

Примітка: файли настройки в .vscodeпапці , як правило , оновлюється тільки при внесенні змін до папці версію налаштувань (там, схоже, буде багато винятків , хоча).

  • Якщо ви внесете зміни в налаштування користувача , вони зазвичай зберігаються в іншому місці.
  • Якщо ви внесете зміни в налаштування робочої області , вони, як правило, зберігаються у тій *.code-workspaceпапці, яку ви зараз використовуєте (вони все ще часто переходять у файли налаштувань папки - але ви можете їх переміщати вручну!).

Це означає , що ви повинні поставити призначені для користувача настройки для вашого персонального комп'ютера в призначених для користувача настройках і поставити загальні з них для конкретного проекту / пакета в інших, коли це можливо.

  • Я помітив, що при використанні розширення Python, .vscode/settings.jsonфайл (який зберігає налаштування папки ) завжди зберігає абсолютний шлях під pythonpathналаштуванням, тому я видалив його виключення з моїх .gitignoreфайлів і більше не зберігаю його до мого репоту Python. Навіть якщо я зберігаю його відносним шляхом, VS Code просто скидає його на абсолютний шлях.
  • Натомість я просто зберігаю будь-яку папку, яку мені потрібно використовувати в коді як робочу область (наприклад, створити myproject.code-workspaceфайл за допомогою Файл -> Зберегти робочу область як . Таким чином, ви можете керувати тим, що йде у файл робочої області, і зберігати його в репо, не виключаючи файл налаштувань папки ( .vscode/settings.json). Ви можете значно перемістити будь-які параметри між робочою областю та файлами налаштувань папки, щоб керувати тим, що зберігається, а що ні. Просто пам’ятайте, що файл робочої області замінить що-небудь у файлі налаштування папки.

Довгі й короткі його - ви можете просто використовувати файл робочого простору, і помістити найбільш загальні настройки в ньому, в той час як введення локальних налаштувань в файл в папку Налаштування, хоча це , як видається , залежать від розширень / мов ви використовуєте.

Звичайно, у вас можуть бути інші причини збереження .vscode/settings.jsonфайлу чи його частини. Або це не може бути проблемою для налаштувань вашої поточної мови.

Ваш пробіг може змінюватися ...


10

Чому б просто не дивитися на практику, крім аргументів тут?

Один з найбільших проектів, який .vscodeя досі знайшов, - це Mozilla Firefox . Схоже, команда Firefox ділиться своїми загальними завданнями та рекомендованими розширеннями.

Тож я здогадуюсь, що це не дуже погано .vscode, якщо ти знаєш, що робиш.

Я оновлю цю посаду, коли побачу інші великі проекти, якими ділиться .vscode.


8

Те саме, що й інші відповіді: ні.

Як ілюстрацію розглянемо підхід, обраний Git 2.19 (Q3 2018), який додає сценарій (in contrib/), щоб допомогти користувачам VSCode краще працювати з кодовою базою Git.

Іншими словами, генеруйте .vscodeвміст (якщо він ще не існує), не версуйте його.

Див. Комісію 12861e2 , фіксування 2a2cdd0 , фіксування 5482f41 , фіксування f2a3b68 , фіксування 0f47f78 , фіксування b4d991d , здійснення 58930fd , здійснення dee3382 , вчинення 54c06c6 (30 липня 2018 р.) Йоханнеса Шинделіна ( dscho) .
(Об’єднав Хуніо С Хамано - gitster- у комітеті 30cf191 , 15 серпня 2018 р.)

contrib: додайте скрипт для ініціалізації конфігурації коду VS

Код VS - це легкий, але потужний редактор вихідного коду, який працює на робочому столі та доступний для Windows, macOS та Linux.
Серед інших мов, він має підтримку C / C ++ за допомогою розширення, яке пропонує не тільки створити та налагодити код, але й Intellisense, тобто завершення з урахуванням коду та подібні приємності.

Цей патч додає скрипт, який допомагає налаштувати середовище для ефективної роботи з VS Code: просто запустіть скрипт оболонки Unix contrib/vscode/init.sh, який створює відповідні файли, і відкрийте папку верхнього рівня вихідного коду Git у VS Code .


1

Відповідь "НІ", тому що папка .vscode призначена для цього редактора, і ви не повинні натискати ці особисті налаштування, щоб повторно відмовитись у випадку заплутання інших, тож ви можете додати їх до файлу .gitignore вашого проекту, щоб ігнорувати зміни.


17
Я б не погодився з вашою суворою позицією. Як згадується у відповіді @BenjaminPasero, цього не потрібно, але це має сенс у багатьох випадках, наприклад, налаштування спільного використання завдань. Звичайно, добре пам’ятати про своїх товаришів по команді та не змушувати їх вподобати без потреби.
Рональд Заріц

Так, саме тому у нас є окремі налаштування користувача та налаштування робочої області ( .vscode/settings.jsonфайл у робочій області): code.visualstudio.com/docs/getstarted/… Тільки такі речі, як конфігурація інструмента, входять у налаштування робочої області
Метт Бірнер

@ RonaldZarīts .vscode папка стосується налаштувань вашого власного редактора та стилів коду, я думаю, це лише для власного використання, тому, як я вже говорив раніше, не натискайте папку, щоб контролювати потік git.
jialin wang

6
@jialinwang Вибачте, я вже це зробив. ;) Жарти вбік, він також містить елементи, які корисно ділитися, наприклад, у моєму проекті у нас є (1) launch.json- запустити конфігурації для налагодження, які неможливо налаштувати. (2) settings.jsonналаштування рівня проекту, такі як компілятор TypeScript для використання, правила пробілу, (3) tasks.json- складання команд. Ви можете не поділитися, але ми вважаємо це корисним.
Рональд Заріць

@jialinwang Ні, вони не є. Вони є налаштуваннями на рівні папки. Не тільки ви повинні включати верхній рівень, якщо у вас є якісь налаштування, характерні для підпапок, ви також повинні включати ці. Важливо - уникнути налаштувань користувача поза параметрами на рівні папки (це важливо і з інших причин). Речі, які ви повинні мати у налаштуваннях рівня папок, повинні застосовуватися до всієї папки: форматів, лінерів, конвенцій пробілів (наприклад, обрізка остаточних останніх рядків, розмір вкладки ...) ...
DylanYoung

1

Простий спосіб зберегти ваші налаштування, не зафіксувавши їх у вашому сховищі проекту git, - це створити робочу область та додати до неї папку.

Коли ви створюєте робочу область, вам потрібно зберегти файл code-workspace. Цей файл містить власні налаштування, просто збережіть цей файл із сховища git і його можна буде безкоштовно додавати .vscodeу .gitignoreфайл.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.