Devo confirmar a pasta .vscode no controle de origem?

294

A .vscodepasta deve ser comprometida com o controle de origem?

Em um projeto novo, a pasta está vazia, exceto o settings.jsonarquivo. Que tipo de coisa entraria nessa pasta? É específico da máquina, específico do desenvolvedor, como a .vspasta e, portanto, não é confirmado? Ou todos os desenvolvedores devem compartilhar esta pasta e, portanto, ela deve ser confirmada?

O comentário na parte superior do arquivo .vscode/settings.jsonindica:

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

Isso parece implicar que a pasta deve conter configurações específicas do projeto e, portanto, ser incluída na fonte. Além disso, este post no UserVoice parece implicar que algumas digitações entrariam lá, sugerindo também que ele deveria ser confirmado.

Ronald Zarīts
fonte
Se você inicia um projeto no Visual Studio e o confirma, deve haver um início adequado (pelo menos típico) .gitignore FE. Se é para estar lá, provavelmente estará. Você também pode fazer referência a isso que usei sem problemas.
ChiefTwoPencils
2
Uma boa ideia, @ChiefTwoPencils! Para o registro, o padrão .gitignoreque o Visual Studio cria possui uma .vscodepasta excluída neste momento. Mas como o VS Code é bastante novo, eles podem não ter chegado a isso ainda. Deixei a pasta não rastreada por enquanto enquanto recebo mais informações.
Ronald Zarīts

Respostas:

313

Faça check-in na .vscodepasta se desejar compartilhar as configurações, a tarefa e a configuração de depuração com a equipe. Eu acho que geralmente faz sentido compartilhar configurações (por exemplo, espaço em branco versus guias) com a equipe, se você deseja aplicar as configurações em uma equipe. Nós da equipe do VS Code também compartilhamos configurações específicas de depuração e tarefa, porque queremos que nossa equipe tenha o mesmo conjunto de destinos de depuração e de tarefas para o VS Code.

Btw você não precisa ter uma .vscodepasta no seu projeto para configurações. Você também pode definir configurações no nível do usuário.

Benjamin Pasero
fonte
54
Obrigado! "Nós da equipe do VS Code ..." é bom o suficiente para mim - para começar, pelo menos!
Ronald Zarīts
97
Se você deseja compartilhar configurações no nível do arquivo, como "espaço em branco versus guias", procure uma solução de editor cruzado como o EditorConfig .
precisa saber é o seguinte
2
Este diretório possui um subdiretório "chrome" com tamanho de 80 MB. Tem certeza de que isso deve ser confirmado no repositório?
ygoe
10
Você não deve usar o VSCode para algo como um projeto python em que as configurações da área de trabalho terão caminhos python específicos do ambiente para itens como ambientes VirtualEnv ou Anaconda. A verificação desses arquivos parece um grande problema para a maioria dos cenários. Faça o check-in de um arquivo de amostra / padrão.
StefanGordon
3
Dar seguimento on symbols.json: stackoverflow.com/questions/51876769/...
ripper234
39

Entre commit / ignore, existe uma terceira opção inteligente: commit com .defaultsufixo.

Por exemplo, você pode adicionar settings.jsona .gitignore, e se comprometer settings.json.default, assim como é prática comum (em minha equipe) com .envos arquivos.

Eu segui esse conselho nas configurações do editor de vídeo Commit para controle de versão? de Mattias Petter Johansson

Tymek
fonte
5
A settings.json.defaultfaz sentido, mas isso pressupõe que toda a sua equipe esteja usando o código vs e sua base de código não esteja sendo compartilhada com um público mais amplo. Acho que meus projetos de código-fonte aberto no GitHub, apenas certifique-se de adicioná-lo ao meu gitignore padrão, porque não quero forçar um IDE específico nos meus usuários em potencial da minha base de código.
Jamescampbell 02/09/19
2
@jamescampbell A adição de arquivos específicos do IDE quase nunca força o IDE em ninguém - apenas oferece a opção de obter as configurações comuns do ambiente, se o usarem. O maior problema é saber se esses arquivos são oficialmente suportados - ou seja, com a intenção de estar sempre atualizados e funcionando. Teoricamente, você pode ter vários arquivos de ambiente IDE para diferentes IDEs, todos presentes sem nenhum conflito.
LightCC
23
  • nunca cometa .vscode/settings.json- com a estranha exceção de search.exclude. Se você realmente precisar, tenha muito cuidado ao colocar apenas as configurações específicas do seu projeto que deseja aplicar a outros desenvolvedores.
  • para validação, formatação, usar compilação outros arquivos como package.json, .eslint, tsconfig.json, etc
  • O único .vscode que faz sentido incluir são configurações de inicialização complexas para depuração.
  • Cuidado, pode haver uma extensão de terceiros em seu sistema que pode colocar informações privadas lá!

O que você não pode fazer é copiar e colar todo o arquivo de conteúdo settings.json .vscode/settings.json. Estou vendo algumas pessoas fazendo isso e confirmar o arquivo é uma atrocidade. Nesse caso, você não apenas quebrará o espaço de trabalho de outras pessoas, mas, pior ainda, aplicará configurações aos usuários que não devem gostar de estética, interface do usuário, experiência. Você provavelmente quebrará seus ambientes porque alguns são muito dependentes do sistema. Imagine que tenho problemas de visão, para que minhas editor.*configurações de usuário sejam personalizadas e, quando abro o projeto, o visual muda. Imagine que tenho problemas de visão s Preciso personalizar as configurações do editor do usuário. * Para poder trabalhar. Eu ficaria bravo.

Se você é sério, não se comprometa .vscode/settings.json. Em geral, configurações que podem ser úteis para um projeto específico, como validação, compilação, fazem sentido, mas em geral você pode usar arquivos de configuração de ferramentas específicas, como .eslint, tsconfig.json, .gitignore, package.json. etc. Acho que os autores do vscode acabaram de adicionar o arquivo para simplificar a experiência do iniciante, mas se você quer ser sério, não!

A única exceção e, em casos muito particulares, pode ser search.exclude

cancerbero
fonte
3
Sinto que sua sugestão .vscode/settingsé muito restritiva. Use .eslintou .editorconfigarquivos se você pode, mas você ainda deve check-in .vscode/settingsse você realmente quer uma definição para ser compartilhado entre todos os desenvolvedores em uma equipe / projeto
Matt Bierner
3
Matt, por que você acha que todos os outros desenvolvedores usam vscode? Podem ser pessoas usando webstorm, vim, sublime, é por isso que você deve trabalhar com eslint, etc e não settings.json.
Cancerbero
Novamente, verificar .vscode/settingsfaz sentido se você está trabalhando em uma equipe que usa o vscode ou se você está trabalhando em um projeto em que muitos desenvolvedores usam o vscode. Nem todas essas configurações têm equivalentes cross-editor
Matt Bierner
@MattBierner bastante justo, se você está desenvolvendo projetos de código próximos em uma empresa que impor o editor, mas eu não acho que é uma situação comum e especialmente em projetos de código aberto ...
Cancerbero
O ponto sobre extensões de terceiros é muito válido - como exemplo, acredito que a extensão MS SQL adicionará perfis de conexão às configurações do projeto / espaço de trabalho.json, se existir - Embora não armazene credenciais, pode estar verificando nomes de servidores etc. #
Dan Harris
18

Resumindo outras respostas

A recomendação é geralmente excluir a .vscodepasta, mas deixe os arquivos JSON selecionados que permitem que outros desenvolvedores recriem as configurações compartilhadas.

Exemplos de configurações a serem incluídas:

  • Configurações de teste específicas do idioma para executar o (s) conjunto (s) de teste ( settings.json)
  • Configurações de extensão para linters e ferramentas de formatação de código para aplicar as regras de idioma usadas neste repositório ( settings.json)
  • Configurações de execução e depuração ( launch.json)
  • Tarefas compartilhadas - se gerenciadas com o Código VS ( tasks.json)

Observe que algumas configurações podem ser armazenadas no arquivo da área de trabalho ou transferidas para ele da pasta .vscode. Ver abaixo.


.gitignoreCódigo de exemplo a ser usado (e onde obtê-lo)

Aqui estão as configurações, conforme sugerido em https://gitignore.io . Você pode procurar por "VisualStudioCode" lá para obter o .gitignorearquivo recomendado mais recente . Eu uso este site como ponto de partida para .gitignorea maioria dos meus novos repositórios:

# 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

No acima .gitignorede arquivo, o .vscode/*linha diz para excluir tudo na .vscodepasta, mas, em seguida, as !.vscode/a_specific_filelinhas indicam git para "não" ignorar alguns arquivos específicos nessa pasta ( settings.json, launch.json, etc.). O resultado final é que tudo é excluído da .vscodepasta, exceto os arquivos nomeados especificamente em uma dessas outras linhas.


Outros fatores e como descobrir por si mesmo ...

A inclusão da .vscodepasta no seu repositório não prejudica ninguém que usa um IDE diferente (ou editor de texto / código).

No entanto, isso pode prejudicar outras pessoas que usam o VS Code, se esses arquivos incluírem configurações genéricas que exigem algo específico para o seu ambiente, diferente do ambiente - como o caminho absoluto em que o repositório está instalado (em que a extensão do VS Code Python sempre coloca o pythonpathin .vscode/settings.json). A chave é evitar salvar configurações personalizadas para o ambiente local, compartilhando apenas as que podem ser usadas por todos.

Por exemplo, se os arquivos de configuração do IDE tiverem caminhos absolutos para o repositório ou quaisquer arquivos / bibliotecas etc., isso é ruim, não compartilhe. Mas se todas as referências forem relativas, elas deverão funcionar para qualquer pessoa que use o repositório (embora, tenha cuidado com as diferenças de especificação de caminho entre Windows / Unix ..).


Sobre as configurações de usuário, espaço de trabalho e pasta

Nota: os arquivos de configurações da .vscodepasta geralmente são atualizados apenas quando você faz alterações na versão da pasta das configurações (embora haja muitas exceções).

  • Se você fizer alterações nas configurações do usuário , elas geralmente são armazenadas em outro local.
  • Se você fizer alterações nas configurações da área de trabalho , elas normalmente são armazenadas na *.code-workspacepasta que você está usando no momento (elas ainda costumam ir para os arquivos de configuração da pasta - mas você pode movê-las manualmente!).

Isso significa que você deve colocar configurações personalizadas para seu PC pessoal nas configurações do usuário e colocar genéricas para um projeto / pacote específico nos outros, sempre que possível.

  • Percebi que, ao usar a extensão Python, o .vscode/settings.jsonarquivo (que salva as configurações da pasta ) sempre salva o caminho absoluto sob a pythonpathconfiguração; portanto, removi a exclusão dos meus .gitignorearquivos e não os salvei nos repositórios do Python. Mesmo que eu o salve com um caminho relativo, o VS Code apenas o redefine para o caminho absoluto.
  • Em vez disso, salvei qualquer pasta que precise usar no Código como área de trabalho (por exemplo, crie um myproject.code-workspacearquivo com Arquivo -> Salvar área de trabalho como . Dessa forma, você pode controlar o que entra no arquivo da área de trabalho e salvá-lo no repositório, excluindo o arquivo de configurações da pasta ( .vscode/settings.json). É possível mover praticamente qualquer configuração entre os arquivos da área de trabalho e das configurações da pasta para controlar o que é salvo e o que não é. Lembre-se de que o arquivo da área de trabalho substituirá qualquer coisa no arquivo de configuração da pasta.

A longa e curta é: você pode simplesmente usar um arquivo da área de trabalho e colocar as configurações mais comuns nele, enquanto coloca as configurações locais no arquivo de configurações da pasta, embora isso pareça depender de quais extensões / idiomas você está usando.

Obviamente, você pode ter outros motivos para salvar o .vscode/settings.jsonarquivo, ou parte dele. Ou isso pode não ser um problema para as configurações no seu idioma atual.

Sua milhagem pode variar ...

LightCC
fonte
10

Por que não apenas olhar para a prática, além dos argumentos por aqui?

Um dos maiores projetos que .vscodeeu encontrei até agora é o Mozilla Firefox . Parece que a equipe do Firefox compartilha suas tarefas comuns e extensões recomendadas.

Então, acho que não é uma má idéia manter .vscode, desde que você saiba o que está fazendo.

Vou atualizar este post quando vir outros grandes projetos que compartilhem .vscode.

Bumsik Kim
fonte
8

O mesmo que as outras respostas: não.

Como ilustração, considere a abordagem escolhida pelo Git 2.19 (Q3 2018), que adiciona um script (in contrib/) para ajudar os usuários do VSCode a trabalhar melhor com a base de código do Git.

Em outras palavras, gere o .vscodeconteúdo (se ainda não existir), não faça a versão.

Consulte commit 12861e2 , commit 2a2cdd0 , commit 5482f41 , commit f2a3b68 , commit 0f47f78 , commit b4d991d , commit 58930fd , commit dee3382 , commit 54c06c6 (30 de julho de 2018) por Johannes Schindelin ( dscho) .
(Incorporado por Junio ​​C Hamano - gitster- in commit 30cf191 , 15 de agosto de 2018)

contrib: adicione um script para inicializar a configuração do código VS

O VS Code é um editor de código-fonte leve, mas poderoso, que roda em sua área de trabalho e está disponível para Windows, macOS e Linux.
Entre outras linguagens, ele oferece suporte ao C / C ++ por meio de uma extensão, que oferece não apenas a compilação e depuração do código, mas também o Intellisense, ou seja, conclusão com reconhecimento de código e detalhes semelhantes.

Este patch adiciona um script que ajuda a configurar o ambiente para funcionar efetivamente com o VS Code: basta executar o script de shell Unix contrib/vscode/init.sh, que cria os arquivos relevantes, e abrir a pasta de nível superior do código-fonte do Git no VS Code .

VonC
fonte
1

A resposta é "NÃO", porque a pasta .vscode é para este editor e você não deve enviar essas configurações pessoais para repo em caso de confusão de outras pessoas, para que você possa adicioná-lo ao arquivo .gitignore do seu projeto para ignorar as alterações.

jialin wang
fonte
17
Eu discordo de sua postura estrita. Como mencionado na resposta de @BenjaminPasero, você não precisa, mas faz sentido em muitos casos, por exemplo, compartilhamento de configuração de tarefas. Obviamente, é bom estar atento aos colegas de equipe e não forçar preferências desnecessariamente.
Ronald Zarīts
Sim, é por isso que temos configurações de usuário separadas e configurações da área de trabalho (o .vscode/settings.jsonarquivo em uma área de trabalho): code.visualstudio.com/docs/getstarted/… Somente coisas como a configuração da ferramenta entram nas configurações da área de trabalho
Matt Bierner
A pasta @ RonaldZarīts .vscode é sobre a configuração e os estilos de código do seu próprio editor, acho que é apenas para uso próprio; portanto, como eu disse antes, não empurre a pasta para controlar o fluxo do git.
Jialin wang
6
@jialinwang Desculpe, eu já fiz. ;) Brincadeiras à parte, ele também contém itens que são úteis para compartilhar, por exemplo, no meu projeto, temos (1) launch.json- iniciar configurações para depuração que podem ser não triviais de configurar. (2) settings.jsonconfigurações no nível do projeto, como o compilador TypeScript a ser usado, regras de espaço em branco, (3) tasks.json- comandos de compilação. Você pode optar por não compartilhar, mas achamos útil.
Ronald Zarīts
@jialinwang Não, eles não são. Eles são configurações no nível da pasta. Você não deve incluir apenas o de nível superior, se tiver alguma configuração específica para as subpastas, também deverá incluí-las. O importante é manter as preferências do usuário fora das configurações no nível da pasta (isso também é importante por outros motivos). O tipo de coisa que você deve ter nas configurações no nível da pasta deve aplicar-se a toda a pasta: formatadores, linters, convenções de espaço em branco (por exemplo, aparar final com novas linhas, tamanho da guia ...) ...
DylanYoung
1

Uma maneira simples de manter suas configurações sem confirmá-las no repositório git do projeto é criar uma área de trabalho e adicionar uma pasta a ela.

Quando você cria um espaço de trabalho, precisa salvar um arquivo code-workspace. Este arquivo contém configurações personalizadas, salve-o fora do repositório git e estará livre para adicioná- .vscodelo .gitignore.

Wendel
fonte