¿Cómo se debe almacenar el código en el control de versiones?

19

¿Cómo se debe almacenar el código en el control de versiones?

Desarrollador amigable ? para que ese programador pueda tomar rápidamente lo último y pueda ejecutar desde su editor sin hacer muchos cambios? (como archivos de configuración que apuntan a dev DB..etc)

o

¿Debería ser amigable con la producción ? la fuente debe ser de una manera fácil de implementar en el entorno de producción y cuando el desarrollador toma lo último, debe realizar los cambios según sus necesidades de desarrollo.

Pavan GR
fuente

Respuestas:

56

Por qué elegir ? Debería ser ambos.

Su entorno de desarrollo debe configurarse para que sea tan fácil como hacer un pago, abrir, construir, ejecutar, depurar (por ejemplo: ¡no hay una ruta absoluta!). Puede hacerlo fácilmente con directivas de compilación, clase de configuración + inyección de dependencia, o incluso trucos como el perso.config en ASP.NET

Su script de compilación automatizado debe personalizarse lo suficiente como para encargarse de la configuración de producción específica, limpieza, empaquetado, etc.


fuente
¿Qué es perso.config? Un google rápido no me ha ayudado.
Tim Murphy
1
En el archivo de configuración de la aplicación .NET, puede hacer referencia a otro archivo de configuración de la aplicación que, cuando se encuentre, anulará la configuración especificada. Por lo tanto, puede crear un archivo dev.config que anule cosas como las cadenas de conexión y otras cosas, y excluirlo de los repositorios.
55
+1: los desarrolladores no deberían pensar en obtener la fuente correcta. Además, el despliegue de producción no debe realizarse directamente desde el control de origen, sino con piezas correctamente construidas, probadas y rastreables . Este proceso debe estar completamente automatizado.
9

Cuando se trata de un proyecto de código abierto en el que se espera que las personas contribuyan, ciertamente optaría por un desarrollador amigable.

Mi mayor disgusto por los proyectos de código abierto es que muy raramente el repositorio contiene todas las dependencias necesarias para construir el código (a veces por razones prácticas o legales), pero cuando no lo hacen, algunos ni siquiera se molestan en decirle qué dependencias necesita, o más importante, qué versión de ellos necesita. (y preferiblemente de dónde obtenerlos)

A veces puede pasar más de medio día buscando y compilando varios otros proyectos para construir el proyecto que está buscando.

Por supuesto, esto solo es relevante para el desarrollo en Windows.

Mark H
fuente
1
Me molesta muchísimo. Incluso lo encuentras en OSS muy conocidos.
Tim Murphy
1
Hay sistemas que alivian ese problema recuperando dependencias automáticamente. Por ejemplo, Apache Maven, Ivy o scons.
sleske
4

Ambas, pero depende de qué tan frecuente hagas tu producción. Para muchas aplicaciones personalizadas, las implementaciones se realizan de forma manual y local. Por otro lado, el desarrollador constantemente confirmará el código, sin importar cuán pequeño o grande sea el proyecto. En mi opinión, creo que es más importante asegurarse de que el desarrollador pueda usar el control de versión correctamente, por lo tanto, hacer su vida más fácil para que tengan tiempo de enfocarse en el código en lugar de encontrar el camino a través del control de versión.

tia
fuente
Los despliegues de producción no deberían ser un problema si utiliza un motor de despliegue continuo para construir.
1

Debe ser amigable con la producción, de lo contrario es problemático mantener compilaciones automatizadas.

diente filoso
fuente
8
¿Por qué? Un script de compilación automatizado puede realizar todas las traducciones necesarias para reestructurar la fuente en un formulario desplegable. Nunca moleste a las personas con algo que la automatización puede resolver.
Joeri Sebrechts
1

Estoy a favor de reducir la fricción para que sea más fácil hacer el trabajo, pero también debe tener en cuenta los modos de falla.

Si la versión del repositorio de origen siempre está configurada para uso de producción, ¿cuál es el resultado de que un desarrollador no pueda reconfigurar antes de ejecutar el sistema? Un desarrollador que ejecuta código contra producción.

Independientemente de si hay otros obstáculos en la forma en que el desarrollador realiza cambios aleatorios en la producción, construir en un modo de falla que lo aliente parece peligroso.

Sugiero que los valores predeterminados incluidos en el código comprometido siempre deben ser seguros . Compruebe los archivos de configuración de producción en el control de origen también, si lo desea, casi siempre lo hago, pero guárdelos en algún lugar "no vivo".

Bevan
fuente
0

Tiendo a luchar por la producción amigable. Mantiene sus compilaciones limpias y evita que configuraciones extrañas entren en producción.

Mike Clark
fuente
0

Definitivamente amigable para el desarrollador, con scripts para automatizar cambios para control de calidad y producción

William Payne
fuente
-1

¿Por qué no tener una rama (dependiendo del control de versión que use, yo uso Git) para el código desplegable y otro para la versión lista para desarrolladores? Esto suena mucho mejor y no es tan difícil de configurar.

Puede trabajar y confirmar sus cambios y luego combinarlos en la versión desplegable.

Ricardo Souza
fuente
Porque las ramas de larga vida son caras de administrar y tienden a ser difíciles de fusionar. Tendrás que recordar hacer todos los cambios en ambas ramas. Mucho mejor hacer que ambas versiones sean iguales y / o tener un script para generar el artifcat desplegable a partir del código listo para el desarrollador.
bdsl