Должен ли я передать папку .vscode в систему контроля версий?

297

Предназначена ли .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
Хорошая идея, @ChiefTwoPencils! Для записи по умолчанию, .gitignoreкоторую создает Visual Studio, .vscodeпапка исключена в данный момент времени. Но поскольку VS Code сам по себе является довольно новым, они, возможно, еще не дошли до него. Я оставил папку без присмотра, пока получаю больше информации об этом.
Рональд Заритс

Ответы:

315

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

Кстати, вам не нужно иметь .vscodeпапку в вашем проекте для настроек. Вы также можете настроить параметры на уровне пользователя.

Бенджамин Пасеро
источник
54
Спасибо! «Мы в команде VS Code ...» - это достаточно хорошо для меня, по крайней мере, для начала!
Рональд Заритс
97
Если вы хотите поделиться настройками на уровне файлов, такими как «пробелы и табуляции», тогда вам следует вместо этого взглянуть на решение для кросс- редактирования, такое как EditorConfig .
Tanz87
2
В этом каталоге находится подкаталог "chrome" размером 80 МБ. Вы уверены, что это должно быть зафиксировано в хранилище?
ygoe
10
Вы не должны использовать VSCode для чего-то похожего на проект Python, в котором в настройках рабочей области будут заданы пути Python для конкретных сред, например VirtualEnv или Anaconda. Проверка этих файлов звучит как огромная проблема для большинства сценариев. Проверьте в файле образца / по умолчанию вместо.
StefanGordon
3
Продолжение symbols.json: stackoverflow.com/questions/51876769/…
ripper234
39

Между фиксацией / игнорированием существует третий умный вариант: фиксация с .defaultсуффиксом.

Например , вы можете добавить settings.jsonк .gitignore, и совершить settings.json.default, так же, как это обычная практика (в моей команде) с .envфайлами.

Я воспользовался этим советом из настроек редактора видео для контроля версий? по Маттиас Petter Johansson

Tymek
источник
5
А settings.json.defaultимеет смысл, но это предполагает, что вся ваша команда использует код, а ваша кодовая база не передается более широкой аудитории. Я считаю, что мои проекты с открытым исходным кодом на 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

cancerbero
источник
3
Я чувствую, что ваше предложение .vscode/settingsслишком ограничено. Используйте .eslintили .editorconfigфайлы, если можете, но вы все равно должны проверить .vscode/settings, действительно ли вы хотите, чтобы настройки были доступны всем разработчикам в команде / проекте
Мэтт Бирнер
3
Мэтт, почему вы предполагаете, что все другие разработчики используют vscode? Это могут быть люди, использующие webstorm, vim, sublime, поэтому вы должны работать с eslint и т. Д., А не с settings.json.
Cancebero
Опять же, .vscode/settingsимеет смысл проверить, работаете ли вы в команде, использующей vscode, или над проектом, в котором многие разработчики используют vscode. Не у всех этих настроек есть кросс-редакторские эквиваленты
Мэтт Бирнер,
@ MattBierner, если честно, если вы разрабатываете проекты с закрытым исходным кодом в компании, которая обеспечивает работу редактора, но я не думаю, что это обычная ситуация, особенно в проектах с открытым исходным кодом ...
Cancerbero
Пункт о сторонних расширениях очень актуален. В качестве примера я полагаю, что расширение MS SQL добавит профили подключения в проект / рабочую область settings.json, если оно существует, - хотя оно не хранит учетные данные, оно может проверять имена серверов и т. Д. .
Dan Harris
19

Подводя итоги других ответов

Рекомендация состоит в том, чтобы вообще исключить .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строки говорят git «не» игнорировать некоторые конкретные файлы в этой папке ( settings.json, launch.jsonи т. Д.). Конечный результат заключается в том, что в .vscodeпапке исключено все, кроме файлов, специально названных в одной из этих строк.


Другие факторы и как выяснить для себя ...

Включение .vscodeпапки в репозиторий фактически не повредит никому, кто использует другую IDE (или редактор текста / кода).

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

Например, если файлы настроек IDE имеют абсолютные пути к репо или любым файлам / библиотекам и т. Д., То это плохо, не делитесь. Но если все ссылки являются относительными, то они должны работать для всех, кто использует репозиторий (хотя, будьте осторожны с различиями в спецификации пути между Windows / Unix ..).


О настройках пользователя, рабочей области и папки

Примечание: файлы настроек в .vscodeпапке, как правило, обновляются только при внесении изменений в версию настроек папки (хотя, похоже, существует множество исключений).

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

Это означает, что вы должны поместить пользовательские настройки для вашего персонального компьютера в пользовательские настройки и, по возможности, добавить общие настройки для определенного проекта / пакета в другие.

  • Я заметил, что при использовании расширения Python .vscode/settings.jsonфайл (который сохраняет настройки папки ) всегда сохраняет абсолютный путь под pythonpathнастройкой, поэтому я удалил его исключение из моих .gitignoreфайлов и больше не сохраняю его в репозитории Python. Даже если я сохраню его с относительным путем, VS Code просто сбрасывает его на абсолютный путь.
  • Вместо этого я просто сохраняю любую папку, которую мне нужно использовать в Code, как рабочее пространство (например, создаю myproject.code-workspaceфайл с помощью File -> Save workspace as . Таким образом, вы можете контролировать то, что входит в файл рабочего пространства, и сохранять его в репозитории, исключая файл настроек папки ( .vscode/settings.json). Вы можете в значительной степени перемещать любые настройки между файлами настроек рабочей области и папок, чтобы контролировать, что будет сохранено, а что нет. Просто имейте в виду, что файл рабочей области переопределит все в файле настроек папки.

Короче говоря, вы можете просто использовать файл рабочей области и поместить в него наиболее распространенные настройки, в то же время поместив локальные настройки в файл настроек папки, хотя, похоже, это зависит от того, какие расширения / языки вы используете.

Конечно, у вас могут быть другие причины для сохранения .vscode/settings.jsonфайла или какой-то его части. Или это не может быть проблемой для настроек на вашем текущем языке.

Ваш пробег может меняться ...

LightCC
источник
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 г.) от Johannes Schindelin ( dscho) .
(Слиты Junio C Hamano - gitster- в фиксации 30cf191 , 15 Aug 2018)

contrib: добавить скрипт для инициализации конфигурации VS Code

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

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

VonC
источник
1

Ответ - «НЕТ», потому что папка .vscode предназначена для этого редактора, и вам не следует выдвигать эти личные настройки для репо в случае путаницы с другими, поэтому вы можете добавить их в файл .gitignore вашего проекта, чтобы игнорировать изменения

Цзилинь Ван
источник
17
Я бы не согласился с вашей строгой позицией. Как уже упоминалось в ответе @BenjaminPasero, вам не нужно этого делать, но это имеет смысл во многих случаях, например, при настройке общего доступа к задаче. Конечно, хорошо быть внимательным к товарищам по команде и не навязывать им предпочтения без необходимости.
Рональд Заритс
Да, именно поэтому у нас есть отдельные пользовательские настройки и настройки рабочего пространства ( .vscode/settings.jsonфайл в рабочем пространстве): code.visualstudio.com/docs/getstarted/… В настройки рабочего пространства входят только такие вещи, как конфигурация инструмента
Matt Bierner
Папка @ RonaldZarīts .vscode содержит информацию о настройках и стилях кода вашего редактора. Я думаю, что она предназначена только для собственного использования, поэтому, как я уже говорил, не выдвигайте папку в поток управления git.
Цзялин Ван
6
@jialinwang К сожалению, я уже сделал. ;) Помимо шуток, он также содержит элементы, которыми полезно поделиться, например, в моем проекте у нас есть (1) launch.json- запуск конфигураций для отладки, которые могут быть нетривиальными в настройке. (2) settings.jsonнастройки уровня проекта, такие как использование компилятора TypeScript, правила пробелов, (3) tasks.json- команды сборки. Вы можете не делиться, но мы считаем это полезным.
Рональд Заритс
@jialinwang Нет, это не так. Это настройки на уровне папок. Вы должны не только включить один из них верхнего уровня, если у вас есть какие-либо настройки, относящиеся к подпапкам, вы также должны включить их. Важно, чтобы пользовательские настройки не входили в настройки уровня папки (это важно и по другим причинам). То, что вы должны иметь в настройках уровня папки, должно применяться ко всей папке: форматеры, линтеры, условные обозначения пробелов (например, обрезать конечные конечные новые строки, размер табуляции ...) ...
DylanYoung
1

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

Когда вы создаете рабочее пространство, вам нужно сохранить файл code-workspace. Этот файл содержит пользовательские настройки, просто сохраните этот файл из репозитория git и можете свободно добавлять его .vscodeв .gitignoreфайл.

Вендель
источник