¿Debo enviar la carpeta .vscode al control de origen?

294

¿La .vscodecarpeta debe estar comprometida con el control de código fuente?

En un proyecto nuevo, la carpeta está vacía, excepto el settings.jsonarchivo. ¿Qué tipo de cosas iría a esta carpeta? ¿Es específico de la máquina, específico del desarrollador como la .vscarpeta y, por lo tanto, no se compromete? ¿O deberían todos los desarrolladores compartir esta carpeta y, por lo tanto, debería comprometerse?

El comentario en la parte superior del archivo .vscode/settings.jsondice:

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

Esto parece implicar que la carpeta debe contener configuraciones específicas del proyecto y, por lo tanto, debe incluirse en la fuente. Además, esta publicación en UserVoice parece implicar que algunas tipificaciones irían allí, lo que también sugiere que debería confirmarse.

Ronald Zarīts
fuente
Si inicia un proyecto en Visual Studio y luego lo confirma, debería haber un inicio adecuado (al menos típico) .gitignore FE. Si está destinado a estar allí, probablemente lo estará. También puede hacer referencia a esto que he usado sin problemas.
ChiefTwoPencils
2
¡Una buena idea, @ChiefTwoPencils! Para el registro, el valor predeterminado .gitignoreque crea Visual Studio tiene la .vscodecarpeta excluida en este momento. Pero dado que VS Code es bastante nuevo, es posible que aún no lo hayan logrado. He dejado la carpeta sin seguimiento por ahora mientras obtengo más información sobre ella.
Ronald Zarīts

Respuestas:

313

Marque en la .vscodecarpeta si desea compartir configuraciones, configuración de tareas y configuración de depuración con el equipo. En general, creo que tiene sentido compartir la configuración (por ejemplo, espacios en blanco frente a pestañas) con el equipo si desea aplicar la configuración en un equipo. En el equipo de VS Code también compartimos configuraciones específicas de depuración y tareas porque queremos que nuestro equipo tenga el mismo conjunto de objetivos de depuración y objetivos de tareas para VS Code.

Por cierto, no necesita tener una .vscodecarpeta en su proyecto para la configuración. También puede configurar ajustes a nivel de usuario.

Benjamin Pasero
fuente
54
¡Gracias! "Nosotros en el equipo VS Code ..." es lo suficientemente bueno para mí, ¡al menos para comenzar!
Ronald Zarīts
97
Si desea compartir configuraciones de nivel de archivo como "espacios en blanco frente a pestañas", debe buscar una solución de editor cruzado como EditorConfig .
Tanz87
2
Este directorio tiene un subdirectorio "Chrome" de 80 MB de tamaño. ¿Estás seguro de que esto debería comprometerse con el repositorio?
ygoe
10
No debe utilizar VSCode para algo como un proyecto de Python donde la configuración del espacio de trabajo tendrá rutas de Python específicas del entorno para entornos como VirtualEnv o Anaconda. Verificar estos archivos parece un gran problema para la mayoría de los escenarios. En su lugar, ingrese un archivo de muestra / predeterminado.
StefanGordon
3
Seguimiento en symbols.json: stackoverflow.com/questions/51876769/…
ripper234
39

Entre commit / ignore hay una tercera opción inteligente: commit con .defaultsufijo.

Por ejemplo, puede añadir settings.jsona .gitignore, y se compromete settings.json.default, al igual que es una práctica común (en mi equipo) con .envlos archivos.

¿Tomé este consejo de la configuración del editor de video para el control de versiones? por Mattias Petter Johansson

Tymek
fuente
55
A settings.json.defaulttiene sentido, pero esto supone que todo su equipo está usando el código vs y su base de código no se comparte con una audiencia más amplia. Creo que mis proyectos de código abierto en GitHub, solo me aseguro de agregarlo a mi gitignore predeterminado, porque no quiero forzar un IDE particular en mis usuarios potenciales de mi base de código.
jamescampbell
2
@jamescampbell Agregar archivos específicos de IDE casi nunca obliga a ese IDE a nadie, solo les da la opción de obtener la configuración de su entorno común si utilizan ese IDE. La pregunta más importante es si esos archivos son oficialmente compatibles, es decir, si están destinados a estar siempre actualizados y funcionando. Teóricamente, podría tener varios archivos de entorno IDE para diferentes IDE presentes sin ningún conflicto.
LightCC
23
  • nunca cometer .vscode/settings.json, con la extraña excepción de search.exclude. Si realmente lo necesita, tenga mucho cuidado de poner solo la configuración particular de su proyecto que desea aplicar a otros desarrolladores.
  • para la validación, el formato, el uso de la compilación otros archivos como package.json, .eslint, tsconfig.json, etc.
  • El único .vscode que tiene sentido incluir son configuraciones complejas de inicio para la depuración.
  • ¡Tenga cuidado, podría haber una extensión de terceros en su sistema que podría poner información privada allí!

Lo que no puede hacer es copiar y pegar todo el archivo de contenido settings.json en .vscode/settings.json. Veo a algunas personas haciendo esto y cometer el archivo es una atrocidad. En ese caso, no solo romperá el espacio de trabajo de los demás, sino que peor aún, impondrá a los usuarios configuraciones que no deberían gustarle la estética, la interfaz de usuario y la experiencia. Probablemente romperá sus entornos porque algunos dependen mucho del sistema. Imagine que tengo problemas de visión, por lo que mis editor.*configuraciones de usuario son personalizadas y cuando abro su proyecto, las imágenes cambian. Imagine que tengo problemas de visión s Necesito personalizar la configuración del editor de usuario. * Para poder trabajar. Estaría enojado

Si eres serio no te comprometas .vscode/settings.json. En general, la configuración que podría ser útil para un proyecto en particular, como validación, compilación, tiene sentido, pero en general puede usar archivos de configuración de herramientas particulares como .eslint, tsconfig.json, .gitignore, package.json. etc. Creo que los autores de vscode acaban de agregar el archivo para simplificar la experiencia de los recién llegados, pero si quieres ser serio, ¡no lo hagas!

La única excepción, y en casos muy particulares, podría ser search.exclude

cancerbero
fuente
3
Siento que tu sugerencia .vscode/settingses demasiado restrictiva. Use .eslinto .editorconfigarchivos si puede, pero aún debe registrarse .vscode/settingssi realmente desea que se comparta una configuración entre todos los desarrolladores en un equipo / proyecto
Matt Bierner
3
Matt, ¿por qué supones que todos los demás desarrolladores usan vscode? Podrían ser personas que usan webstorm, vim, sublime, por eso debería trabajar con eslint, etc. y no con settings.json.
cancerbero
Nuevamente, el registro .vscode/settingstiene sentido si está trabajando en un equipo que usa vscode o si está trabajando en un proyecto donde muchos desarrolladores usan vscode. No todas estas configuraciones tienen equivalentes de editor cruzado
Matt Bierner
@MattBierner es justo, si está desarrollando proyectos de código cerrado en una empresa que hace cumplir el editor, pero no creo que sea una situación común y especialmente en proyectos de código abierto ...
cancerbero
El punto sobre las extensiones de terceros es muy válido: como ejemplo, creo que la Extensión MS SQL agregará perfiles de conexión a la configuración del proyecto / espacio de trabajo.json si existe: aunque no almacena credenciales, puede estar registrando nombres de servidores, etc. .
Dan Harris
18

Resumiendo otras respuestas

En general, se recomienda excluir la .vscodecarpeta, pero dejar archivos JSON seleccionados que permitan a otros desarrolladores recrear configuraciones compartidas.

Ejemplos de configuraciones para incluir:

  • Configuraciones de prueba específicas del idioma para ejecutar los conjuntos de pruebas ( settings.json)
  • Configuración de extensión para linters y herramientas de formato de código para aplicar las reglas de idioma utilizadas en este repositorio ( settings.json)
  • Ejecutar y depurar configuraciones ( launch.json)
  • Tareas compartidas: si se administran con VS Code ( tasks.json)

Tenga en cuenta que algunas configuraciones pueden almacenarse en el archivo del espacio de trabajo o transferirse desde la carpeta .vscode. Vea abajo.


.gitignoreCódigo de muestra para usar (y dónde obtenerlo)

Aquí están las configuraciones, como se sugiere en https://gitignore.io . Puede buscar "VisualStudioCode" allí para obtener el último .gitignorearchivo recomendado . Uso este sitio web como punto de partida .gitignorepara la mayoría de mis nuevos repositorios:

# 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

En el anterior .gitignorearchivo, la .vscode/*línea dice excluir todo en la .vscodecarpeta, pero entonces las !.vscode/a_specific_filelíneas le dicen a Git que "no" ignorar algunos archivos específicos en esa carpeta ( settings.json, launch.json, etc.). El resultado final es que todo está excluido en la .vscodecarpeta, excepto los archivos nombrados específicamente en una de esas otras líneas.


Otros factores y cómo descubrirlo usted mismo ...

Incluir la .vscodecarpeta en su repositorio en realidad no perjudica a nadie que use un IDE diferente (o editor de texto / código).

Sin embargo, puede dañar a otras personas que usan VS Code, si estos archivos incluyen configuraciones genéricas que requieren algo específico para su entorno, que es diferente en su entorno, como la ruta absoluta en la que está instalado el repositorio (que la extensión VS Code Python pone constantemente el pythonpathen .vscode/settings.json). La clave es evitar guardar configuraciones personalizadas para su entorno local, solo compartir aquellas que puedan ser utilizadas por todos.

Por ejemplo, si los archivos de configuración IDE tienen rutas absolutas al repositorio o cualquier archivo / biblioteca, etc., eso es malo, no lo comparta. Pero si todas las referencias son relativas, entonces deberían funcionar para cualquiera que use el repositorio (aunque, tenga cuidado con las diferencias de especificación de ruta entre Windows / Unix ...).


Acerca de la configuración de usuario, espacio de trabajo y carpeta

Nota: los archivos de configuración en la .vscodecarpeta generalmente solo se actualizan cuando realiza cambios en la versión de carpeta de la configuración (aunque parece haber muchas excepciones).

  • Si realiza cambios en la configuración del usuario , generalmente se almacenan en otro lugar.
  • Si realiza cambios en la configuración del espacio de trabajo , normalmente se almacenan en la *.code-workspacecarpeta que está utilizando actualmente (todavía suelen ir a los archivos de configuración de la carpeta, ¡pero puede moverlos manualmente!).

Esto significa que debe colocar configuraciones personalizadas para su PC personal en las configuraciones del usuario , y poner las genéricas para un proyecto / paquete en particular en las demás, siempre que sea posible.

  • Me di cuenta de que cuando uso la extensión Python, el .vscode/settings.jsonarchivo (que guarda la configuración de la carpeta ) siempre guarda la ruta absoluta bajo la pythonpathconfiguración, por lo que he eliminado su exclusión de mis .gitignorearchivos y ya no la guardo en mis repositorios de Python. Incluso si lo guardo con una ruta relativa, VS Code simplemente lo restablece a la ruta absoluta.
  • En cambio, solo guardo cualquier carpeta que necesito usar en Code como espacio de trabajo (por ejemplo, crear un myproject.code-workspacearchivo con Archivo -> Guardar espacio de trabajo como . De esa manera, puede controlar lo que va en el archivo del espacio de trabajo y guardarlo en el repositorio, excluyendo el archivo de configuración de la carpeta ( .vscode/settings.json). Puedes mover prácticamente cualquier configuración entre el espacio de trabajo y los archivos de configuración de la carpeta para controlar lo que se guarda y lo que no. Solo ten en cuenta que el archivo del espacio de trabajo anulará cualquier cosa en el archivo de configuración de la carpeta.

En resumen, puede usar un archivo de espacio de trabajo y poner la configuración más común en él, mientras coloca la configuración local en el archivo de configuración de la carpeta, aunque esto parece depender de las extensiones / idiomas que esté utilizando.

Por supuesto, puede tener otras razones para guardar el .vscode/settings.jsonarchivo, o alguna parte del mismo. O esto puede no ser un problema para la configuración en su idioma actual.

Su experiencia puede ser diferente...

LightCC
fuente
10

¿Por qué no solo mirar la práctica, aparte de los argumentos por aquí?

Uno de los proyectos más grandes que .vscodehe encontrado hasta ahora es Mozilla Firefox . Parece que el equipo de Firefox comparte sus tareas comunes y extensiones recomendadas.

Así que supongo que no es una mala idea mantener .vscode, siempre y cuando sepas lo que estás haciendo.

Actualizaré esta publicación cuando vea otros grandes proyectos que comparta .vscode.

Bumsik Kim
fuente
8

Igual que otras respuestas: no.

Como ilustración, considere el enfoque elegido por Git 2.19 (Q3 2018), que agrega un script (in contrib/) para ayudar a los usuarios de VSCode a trabajar mejor con la base de código Git.

En otras palabras, genere el .vscodecontenido (si aún no existe), no lo versione.

Ver commit 12861e2 , commit 2a2cdd0 , commit 5482f41 , commit f2a3b68 , commit 0f47f78 , commit b4d991d , commit 58930fd , commit dee3382 , commit 54c06c6 (30 de julio de 2018) por Johannes Schindelin ( dscho) .
(Fusionada por Junio ​​C Hamano - gitster- en commit 30cf191 , 15 ago 2018)

contrib: agregue un script para inicializar la configuración del código VS

VS Code es un editor de código fuente ligero pero potente que se ejecuta en su escritorio y está disponible para Windows, macOS y Linux.
Entre otros lenguajes, es compatible con C / C ++ a través de una extensión, que ofrece no solo compilar y depurar el código, sino también Intellisense, es decir, finalización con reconocimiento de código y detalles similares.

Este parche agrega un script que ayuda a configurar el entorno para que funcione eficazmente con VS Code: simplemente ejecute el script de shell de Unix contrib/vscode/init.sh, que crea los archivos relevantes, y abra la carpeta de nivel superior del código fuente de Git en VS Code .

VonC
fuente
1

La respuesta es "NO", porque la carpeta .vscode es para este editor y no debe presionar esta configuración personal para reposicionar en caso de confundir a otros, por lo que puede agregarla al archivo .gitignore de su proyecto para ignorar los cambios

jialin wang
fuente
17
No estaría de acuerdo con su postura estricta. Como se menciona en la respuesta de @BenjaminPasero, no es necesario, pero tiene sentido en muchos casos, por ejemplo, compartir la configuración de la tarea. Por supuesto, es bueno tener en cuenta a los compañeros de equipo y no forzar preferencias innecesariamente sobre ellos.
Ronald Zarīts
Sí, esta es la razón por la que tenemos configuraciones de usuario y configuraciones de espacio de trabajo separadas (el .vscode/settings.jsonarchivo en un espacio de trabajo): code.visualstudio.com/docs/getstarted/… Solo cosas como la configuración de herramientas entran en la configuración del espacio de trabajo
Matt Bierner
@ La carpeta .vscode de RonaldZarīts trata sobre la configuración y los estilos de código de su propio editor, creo que es solo para uso propio, por lo que, como dije antes, no empuje la carpeta al flujo de control de git.
jialin wang
66
@jialinwang Lo siento, ya lo hice. ;) Bromas aparte, también contiene elementos que son útiles para compartir, por ejemplo, en mi proyecto tenemos (1) launch.json: configuraciones de lanzamiento para depuración que pueden ser no triviales de configurar. (2) settings.jsonconfiguraciones de nivel de proyecto, como el compilador TypeScript para usar, reglas de espacios en blanco, (3) tasks.json- comandos de compilación. Puede optar por no compartir, pero nos parece útil.
Ronald Zarīts
@jialinwang No, no lo son. Son configuraciones de nivel de carpeta. No solo debe incluir el de nivel superior, si tiene alguna configuración específica para las subcarpetas, también debe incluirlas. Lo importante es mantener sus preferencias de usuario fuera de la configuración a nivel de carpeta (esto también es importante por otras razones). El tipo de cosas que debe tener en la configuración de nivel de carpeta debe aplicarse a toda la carpeta: formateadores, linters, convenciones de espacios en blanco (por ejemplo, recortar líneas finales finales nuevas, tamaño de tabulación ...) ...
DylanYoung
1

Una manera simple de mantener su configuración sin comprometerla en el repositorio de git de su proyecto es crear un espacio de trabajo y agregarle una carpeta.

Cuando crea un espacio de trabajo, debe guardar un archivo code-workspace. Este archivo contiene configuraciones personalizadas, solo guarde este archivo fuera del repositorio de git y será libre de agregarlo .vscodeal .gitignorearchivo.

Wendel
fuente