Subversión: trata de la generación de código

Tenemos un marco de aplicaciones web que queremos usar con Subversion. Lo hemos intentado un par de veces antes para configurarlo, pero la parte de generación de código de nuestra aplicación está causando problemas.

El problema es que el código generado de un desarrollador puede estar en un file más nuevo que el de otro desarrollador, pero el contenido del file más nuevo puede ser anterior, porque el código y los files xml que son la base para la generación del código se han actualizado desarrollador nr2.

Una solución que hemos analizado es excluir los files generados por el código, pero a menudo obtenemos nuevos files que se generan y se agregan automáticamente al repository a less que recordemos excluirlos, y tenemos que verificar manualmente los últimos generados. files. ¿Y cómo sabes si tienes el último file generado?

¿Alguna sugerencia sobre cómo resolver esto en Subversion?

La mejor manera de decidir si algo debe estar en Subversion es recordar que es un sistema de control de versiones . Si no necesita recordar cómo cambió con el time, no es necesario que esté en svn . Use svn:ignore para excluir files de dicha consideración.

Ese es el caso aquí: no le importa cómo cambiaron los files generados con el time, solo el código original utilizado para producirlos. Eso significa que deben ser excluidos de Subversion. Puede hacer esto con un enlace precomprometido, haciendo cumplir, por ejemplo, que todos los files generados por código no deberían comprometerse alguna vez. Tengo una frase favorita para esta táctica: "Versión de la receta, no del pastel".

¿Y cómo sabes si tienes el último file generado?

Exactamente; no, porque los files generados dependen de la fuente utilizada para crearlos. El siguiente paso es asegurarse de que su process de compilation genere automáticamente estos files dado el código fuente inicial, pero probablemente sea una pregunta separada de StackOverflow si no sabe cómo hacerlo.

Una solución que hemos analizado es excluir los files generados por el código

¡Sí! ¡Mil veces sí! Nunca haga control de versiones de files que puede generar a partir de otros files. En su lugar, agregue las reglas de generación a su file MAKE (u otro script de compilation).

se agregan automáticamente al repository

¿Qué está agregando automáticamente? Por lo que puedo recordar, siempre he tenido que agregar files manualmente. Si la herramienta que se agrega automáticamente está mal, entonces ¿quizás es mejor corregir esa herramienta?

a less que recordemos excluirlo

Haga que la herramienta de generación agregue un comentario que diga "file autogenerado por $ TOOL" y agregue un enlace de subversión que grepea los files para ese comentario y los rechaza. Haga provisiones adecuadas para las herramientas de generación de código; como: si el file contiene el comentario "autogenerado", agréguelo de todos modos si también tiene "rechazo de svn excepto" en un comentario en la (s) misma (s) línea (s).

¿Y cómo sabes si tienes el último file generado?

Al generarlo a partir de la última receta, que está en el último compromiso de subversión.

Debería usar svn: ignorar , porque realmente no quiere comprometer el material generado automáticamente a la subversión.

Tal vez soy simple, pero no almacenaría los files generados en el control de versiones. Dado que se genera, no tiene sentido mantener un historial de versiones.

Con el código y xml para hacer la generación en el control de la versión, siempre puedes generar el código para cada versión.

Otra buena estratagem es no escribir código en files generados. Mantenlos separados Entonces, no importa quién los genera, no importará.

Mantenga su lógica fuera de un file generado.

Nombre el file generado algo así como "className.autoGenerated.cs" y agregue el atributo recursivo svn: ignore con el patrón de nombre correspondiente "* .autoGenerated.cs".