¿Deben los files del proyecto IDE ponerse bajo el control de la fuente?

Esto puede networkingucirse a la opinión: me pregunto si los files del proyecto (los files generados y utilizados por el IDE y no el comstackdor) deberían includese en los repositorys de control de código fuente. ¿Hay ciertos casos en que deberían y no deberían?

Editar: Debo mencionar que la razón por la que estoy preguntando es porque estoy viendo algunas lists de files que git debe ignorar al usar Visual Studio: algunas de estas lists tienen los files del proyecto y otras no.

Una pregunta simple: ¿los necesitas para build tu código? Si no, entonces son artefactos, no files fuente, y no tienen lugar en el sistema de control de origen.

Cosas como las preferences de color de su editor o las combinaciones de teclas no son parte del sistema de compilation. Los indicadores del comstackdor y demás son.

Almacenamos todo lo que se necesita para build, hasta los discos de installation del sistema operativo y la configuration requerida. Anal-retentive ni siquiera se acerca a describirnos 🙂 Si pudiéramos almacenar el hardware, lo haríamos (tenemos que arreglárnoslas con el almacenamiento de un documento que detalla las especificaciones de hardware).

También ocasionalmente probamos nuestra capacidad para build el entorno de desarrollo desde cero utilizando solo lo que está almacenado en los repositorys. El fracaso significa que no estamos cubiertos en términos de recuperación de desastres.

Para mí es más fácil y lógico include files de proyecto en los repositorys, ya que son parte del proyecto en sí . Cambios de proyecto, files de proyecto también.

Cada vez que tenga que revertir todo el proyecto al estado anterior o invitar a alguien a registrarse para trabajar en el proyecto, es mucho más conveniente tener cada file . No solo el código fuente

Por cierto, la mayoría de los IDE incluyen los files del proyecto en repositorys, y será muy doloroso excluirlos y aún así mantener la posibilidad de registrarse y salir del propio IDE.

Si tiene scripts de compilation especiales, es posible que el IDE necesite build su proyecto. Además, si haces un checkout nuevo, ¿realmente quieres pasar por la molestia de configurar todos los parameters de compilation del proyecto, etc. cada vez?

Si trabajas con otros desarrolladores y no usan otro IDE u otras versiones de IDE, los files del proyecto IDE no serán los mismos. Creo que los files del proyecto IDE no deben ponerse bajo el control de la fuente.

En general, los files del proyecto deben ser controlados por la versión, pero los files de preference del usuario deben ignorarse.

Por ejemplo, al usar Visual Studio, los files '.proj' y '.sln' deberían tener una versión controlada, pero '.suo' debe ignorarse.

  • mantener bajo control de versión todos los files de proyecto que son necesarios para build el proyecto
  • Evite agregar derivados (por ejemplo, ctags y todos los files que pueda generar)

Para .NET, creo que los files del proyecto deben includese en los repositorys de control de origen. En C # y VB, es el file del proyecto el que define qué files fuente forman parte del ensamblaje. Si agrega un file fuente al proyecto y no tiene el file de proyecto bajo control de fuente, todos los demás desarrolladores en el equipo deben agregar manualmente el file a SU proyecto.

En Java, todos los files de un tree fuente se incluyen automáticamente en la compilation (si no recuerdo mal), por lo que la necesidad de un file de proyecto puede no ser la misma en Java.

Usamos Eclipse y el único file que registramos es el file .classpath para que los cambios en la ruta de class no rompan la construcción en una actualización.

Estoy trabajando para una empresa que desarrolla y vende un IDE. Al principio eliminamos todos los files de proyecto de los directorys de usuario. La mayoría de la gente estaba feliz con esto. Pero de vez en cuando alguien preguntaba si era posible porque querían trabajar desde su sistema doméstico y utilizaban el control de versiones como una herramienta de transferencia de files rápida que sincronizaba el trabajo y el lugar de origen.

¡Puedo decirte que implementar esta request no fue fácil!

La configuration debe estar claramente separada, por ejemplo, si su IDE almacena las coorderadas de la window en el file de configuration y usted trabaja en el sistema de doble monitor en el trabajo y una pequeña notebook en casa es realmente malo. El IDE también debe ser capaz de proporcionar una forma de gestionar la expansión de variables de entorno en cada ruta de file. Y, por supuesto, debe ser capaz de dar a los files de configuration nombres individuales o almacenarlos en diferentes lugares; de lo contrario, pronto descubrirá que 3 desarrolladores diferentes en el proyecto tienen 5 opiniones diferentes sobre fonts, colors, valores pnetworkingeterminados, etc. no está bien hecho, todos usarán la misma configuration.

Por otro lado, muchos IDEs tienen grandes cantidades de datos para almacenar, algunos de ellos incluso almacenan casos de testing de unidades configuradas con GUI en la configuration del proyecto. En este caso, es útil reutilizar los files y verificarlos en el sistema de control de versiones.

Entonces ves que depende. Pruébelo y vea cómo funciona para su entorno.

Los files de proyecto que incluyen instrucciones de compilation definitivamente deben estar bajo control de fuente. No desea establecer el comstackdor correcto y las banderas y la ruta del linker en cada nueva extracción, ¿verdad?

Sin embargo, no todos los files de proyecto son iguales, y algunos son solo "files de ayuda" que almacenan tags o recientemente abren files, etc. Esos no deben ser versionados, ya que pueden variar para cada desarrollador.

Hay dos beneficios diferentes de los files de proyecto de versionning:

  • uno es más fácil de desarrollar. Especialmente para un nuevo desarrollador. Todo lo que tienes que hacer para comenzar a trabajar es hacer un pago.
  • el otro es tener una construcción reproductiva. Ya sea que la construcción provenga del desarrollador A o del desarrollador B, el object resultante es el mismo. Este es el beneficio más importante de IMO, y es un paso hacia la automation de la construcción.

Sí, creo que los files del proyecto IDE deberían estar comprometidos con Subversion ya que la mayoría de esto incluye configuraciones sobre cómo build / comstackr el proyecto.

Si hay configuraciones que se utilizan únicamente para almacenar las preferences del desarrollador fuera de la convención de encoding, entonces deben eliminarse (es decir, excluirse) para no crear confusión.

No estoy seguro si fue mencionado, pero Visual Studio (al less la versión de C ++) produce dos files de proyecto:

  1. Archivo de proyecto general que contiene la estructura y la configuration de compilation. Esto es necesario para build con VS.
  2. Archivo de proyecto específico del usuario (generalmente termina con el nombre del usuario y de la PC). Este no es obligatorio para la construcción, por lo que no lo includeemos en el control de origen.