Quiero agregar un proyecto que en este caso se crea en Netbeans, pero esta pregunta es general para la mayoría de los IDE. Es simplemente, qué debo incluir en mi repositorio. Por ejemplo, Netbeans crea una carpeta nbproject, eclipse crea una carpeta .settings, etc. Si debo incluirlos en mi repositorio, cuáles son las ventajas / desventajas de incluir o no la configuración específica del proyecto.
En este caso es un proyecto personal, así que no imagino que otras personas comenzarán a trabajar en él, pero sería bueno agregar la mínima configuración del proyecto para que el proyecto en sí sea fácil de comenzar a trabajar en diferentes máquinas.
programming-practices
git
project
maintainability
Daniel Figueroa
fuente
fuente
Respuestas:
Realmente depende de qué datos sean y debe decidirse caso por caso, tal vez incluso para archivos individuales. Echa un vistazo a los contenidos de esos archivos. Más a menudo que no se puede decir lo que significan. Cosas como la posición y el tamaño de las ventanas del IDE es algo que no desea en el control de origen.
Pero algunos de los archivos del proyecto IDE son metadatos vitales del proyecto. No conozco bien Netbeans, pero para eclipse, el archivo .project le dice al IDE cuál es el nombre del proyecto, que es un proyecto web Java, etc. y el archivo .classpath contiene información sobre las carpetas y bibliotecas de origen. Algunos archivos en el directorio .settings pueden ser igualmente importantes, por ejemplo, org.eclipse.core.resources.prefs contiene información sobre qué codificación se debe usar para qué archivos.
Como metadatos del proyecto, este material merece ser versionado en el control de código fuente.
Algunos IDE pueden importar metadatos del proyecto desde otros IDE. Sería aún mejor tenerlo en una forma que no esté vinculada a un IDE específico.
Para Java, existe tal cosa: Maven . Impone convenciones fuertes en la estructura del proyecto y le permite especificar metadatos del proyecto (como las dependencias de la biblioteca) en un punto (un archivo llamado pom.xml que está en el directorio principal del proyecto y, por supuesto, en el control de origen). Hay complementos que luego crean archivos de proyecto IDE a partir de la configuración de Maven, y otros que pueden automatizar el proceso de construcción del proyecto o hacer casi cualquier cosa. A veces parece que hace que las cosas sean innecesariamente complejas y lleva algún tiempo aprender, pero los beneficios generalmente valen la pena.
fuente
Esto realmente depende de qué tipo de información le gustaría tener en el repositorio. Si desea todo hasta los archivos que tenía abiertos y editando en el momento de la confirmación, y usted es el único que usa el repositorio, continúe y confirme todo, pero sepa que puede que no funcione en otra máquina .
Si desea poder compartir su código con otras personas que podrían no estar usando el mismo IDE, simplemente confirme el código sin ninguna implementación específica del proyecto.
Si sabe que todos usan el mismo IDE, entonces probablemente pueda incluir cualquier cosa que no sea específica de la computadora, es decir, cualquier archivo / carpeta de configuración solo para el IDE en sí, de esa manera ya pueden tener la capacidad de importar el proyecto como IDE lo espera.
fuente
No se deben incluir los artefactos que ayudan a su desarrollo y que no son útiles para la compilación / lanzamiento o el proyecto en sí . El repositorio debe estar limpio y ordenado, y solo debe tener aquellas cosas que sean relevantes para el proyecto, no su entorno . El repositorio debe ser incógnito de sus hábitos. Y en segundo lugar, te molestará innecesariamente cuando hagas algo parecido a ... pero bueno, nunca hice ningún cambio ... ahh ignora eso.
git status
Permítanme dar un ejemplo más práctico (lo usaré
git
aquí como herramienta):Nunca desearía que un submódulo (recursivo) dentro de su repositorio principal tenga un material específico de IDE (también podría interferir con el entorno principal del proyecto) porque lo único que le importa es el código escrito por otra persona (o usted) y es de uso dentro del proyecto actual. No es el entorno en el que se desarrolló. Probablemente tampoco quieras hacerle eso a otra persona.
Para poder usar su configuración en una máquina diferente, sugiero cavar dentro de su IDE y ver qué soporte brinda para tales cosas. Emacs tiene
init
y servidor Emacs también. O puede hacer su macro o script personalizado (.sh
) que realiza la configuración automáticamente.fuente
Si se trata de un proyecto personal, digo almacenar la configuración en el control de fuente. Personalmente, nada mata más mi motivación para un proyecto que configurar un entorno de desarrollo nuevamente.
Cuando hay más personas involucradas, no pongo estas cosas en el control de la fuente. En mi equipo, tenemos una combinación de IntelliJ, Sublime Text y Eclipse en uso. Los archivos IDE simplemente agregan desorden, y resultan en la recepción de confirmaciones a esos archivos de otras personas para un IDE que no usa.
Además, su proyecto no debería depender del IDE de todos modos. Un servidor de compilación no iniciará Eclipse para compilar su producto, por lo que ya no debería tener IDE. Un punto más menor: elimina la organización personal dentro del proyecto. Por ejemplo, en IntelliJ me gusta usar muchos módulos dentro de nuestro proyecto. Nadie más que use IntelliJ se preocupa por esto porque no almacenamos los archivos .iml (módulo).
Si su equipo está usando el mismo IDE, entonces es mejor, pero alguien comete una entrada de .classpath incorrecta porque usaron una ruta absoluta. Ahora todos los que usan el IDE se preocupan por eso.
Claro, la desventaja es que hay más configuración cuando alguien revisa el proyecto. Creo que vale la pena. Usamos Ivy para la gestión de dependencias y tenemos información sobre la configuración, las dependencias, etc. A pesar de este costo inicial, creo que vale la pena mantener la configuración de IDE fuera del control de la fuente.
fuente