Pregunta

Usar interfaces en línea para un sistema de control de versiones es una buena manera de tener una ubicación publicada para las versiones más recientes del código.Por ejemplo, tengo un paquete LaTeX aquí (que se publica en CTAN cada vez que se verifica que los cambios realmente funcionan):

http://github.com/wspr/pstool/tree/master

El paquete en sí se deriva de un único archivo (en este caso, pstool.tex) que, cuando se procesa, produce la documentación, el archivo Léame, el archivo de instalación y los archivos reales que componen el paquete tal como lo utiliza LaTeX.

Para facilitar la descarga de este material a los usuarios, incluyo todos los archivos derivados mencionados anteriormente en el repositorio, así como el archivo maestro pstool.tex.Esto significa que tendré el doble de cambios cada vez que confirme porque el archivo del paquete pstool.sty es un subconjunto generado del archivo maestro.

¿Es esto una perversión del control de versiones?


@Jon Limjap planteó un buen punto:

¿Existe otra forma de publicar los archivos generados en otro lugar para descargarlos, en lugar de depender de su control de versiones como su servidor de descarga?

Ese es realmente el quid de la cuestión en este caso.Sí, las versiones publicadas del paquete se pueden obtener en otros lugares.Por lo tanto, realmente tiene más sentido versionar solo los archivos no generados.

Por otro lado, @madirEl comentario de que:

la conveniencia, que es real y repetida, supera el costo, que se soporta detrás de escena.

También es bastante pertinente porque si un usuario encuentra un error y lo soluciono de inmediato, puede dirigirse al repositorio y obtener el archivo que necesita para continuar trabajando sin tener que ejecutar ningún paso de "instalación".

Y este, creo, es el caso de uso más importante. para mi conjunto particular de proyectos.

¿Fue útil?

Solución

Estoy usando Tortoise SVN para el desarrollo ASP.NET de sistemas pequeños.La mayor parte del código se interpreta ASPX, pero hay alrededor de una docena de archivos DLL binarios generados mediante un paso de compilación manual.Si bien en teoría no tiene mucho sentido versionar estos códigos fuente, ciertamente resulta conveniente garantizar que se reflejen correctamente desde el entorno de desarrollo al sistema de producción (un clic).Además, en caso de desastre, la reversión al paso anterior se realiza nuevamente con un clic en SVN.

Así que me atreví y los incluí en el archivo SVN: la conveniencia, que es real y repetida, supera el costo, que se soporta detrás de escena.

Otros consejos

No versionamos archivos que puedan generarse automáticamente utilizando scripts incluidos en el repositorio.La razón de esto es que después de realizar el pago, estos archivos se pueden reconstruir con un solo clic o comando.En nuestros proyectos siempre intentamos que esto sea lo más fácil posible, evitando así la necesidad de versionar estos archivos.

Puedo imaginar un escenario en el que esto podría ser útil si se "etiquetan" versiones específicas de un producto, para su uso en un entorno de producción (o cualquier entorno que no sea de desarrollo) donde las herramientas necesarias para generar el resultado podrían no estar disponibles.

También utilizamos objetivos en nuestros scripts de compilación que pueden crear y cargar archivos con una versión publicada de nuestros productos.Esto se puede cargar en un servidor de producción o en un servidor HTTP para que los usuarios de sus productos lo descarguen.

No necesariamente, aunque las mejores prácticas para el control de fuentes recomiendan no incluir archivos generados, por razones obvias.

¿Existe otra forma de publicar los archivos generados en otro lugar para descargarlos, en lugar de depender de su control de versiones como su servidor de descarga?

Normalmente, los archivos derivados no deberían almacenarse en el control de versiones.En su caso, podría crear un procedimiento de lanzamiento que creara un tarball que incluya los archivos derivados.

Como usted dice, mantener los archivos derivados en control de versiones solo aumenta la cantidad de ruido con el que tiene que lidiar.

En algunos casos lo hacemos, pero es más un caso de uso del tipo administrador de sistemas, donde los archivos generados (por ejemplo, archivos de zona DNS creados a partir de un script) tienen un interés intrínseco por derecho propio, y el control de revisión es más un registro de auditoría lineal que control de fuente de ramificación y etiquetado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top