2010-01-05 18 views
17

¿Existe una manera fácil de, al confirmar un archivo, insertar información automáticamente en el archivo de código mismo (como autor, cometer comentario, fecha de compromiso, etc.)? Me gustaría que esta información se anexe a un bloque en la parte superior de cada archivo comprometido. Básicamente, todo el historial de revisión debe documentarse en cada archivo de código ...Subversion: Agregue datos de revisión al archivo de código en commit

Veo que hay una manera de usar propiedades de subversión para lograr algo similar, pero no veo cómo obtener el comentario de confirmación real en el archivo , y tampoco veo cómo mantener un registro en ejecución que tenga todo el historial de revisión en lugar de solo la última información de confirmación.

Personalmente, no creo que sea una buena idea, ya que el archivo de código solo debe tener código, pero desafortunadamente este es un requisito para mi proyecto actual.

Respuesta

5

Sé que no es la respuesta que está buscando, pero trataría de convencerlos de que no lo hagan.

La mejor opción sería usar sustituciones de palabra clave, pero SVN no proporciona una palabra clave $Log$ por buenas razones (ver http://subversion.tigris.org/faq.html#log-in-source), que es la misma razón que usaría para argumentar en contra de tener el log en el código.

+0

Estos son archivos de código que nunca deberán fusionarse. Los otros desarrolladores quieren ver el registro de cambios en el archivo mientras trabajan en él. Intenté explicarles que pueden ver el registro de cambios con mucha facilidad en 2 clics, pero la respuesta fue "¡Bueno, eso es 2 clics demasiado!" –

1

Veo que hay una manera de utilizar la subversión propiedades para lograr algo similar, pero no veo cómo conseguir el actual cometer comentario en el archivo , y no veo cómo para mantener un registro en ejecución que tiene todo el historial de revisiones en comparación con solo la última información de confirmación.

No desea el comentario de confirmación en su archivo. Eso es lo que svn log es para, después de todo.

+0

Sé que es una mala idea, pero como mencioné en mi pregunta, ¡tengo que hacerlo! –

2

Sugeriría usar CVS en su lugar. Tiene esta capacidad incorporada. CVS tiene alrededor de 24 años. Parece que los requisitos de documentación pueden ser de la época en la que el control de versiones no era común, por lo que probablemente sea mejor usar una herramienta que se creó en esa época.

+1

Pregunta sobre SVN y le dices que use CVS. Abucheo. – dlchambers

0

Aparte de eso, como dices a ti mismo, al ser una idea estúpida, no puedo pensar en una forma sencilla de hacerlo usando métodos SVN integrados. Tendría que examinar cada archivo después de finalizar la compra (o actualizar) mediante una secuencia de comandos, identificar un bloque de "registro de cambios" dentro de ese archivo y actualizar ese bloque con el resultado de svn log. Se puede hacer, pero va a ser mucho trabajo, tendrá que supervisar cada copia de trabajo para ver los cambios, y requiere muchos recursos.

Aparte de eso, un gancho post-commit puede ser lo mejor para trabajar, pero manipular archivos dentro del repositorio fuera de un contexto de revisión suena horrible, si es posible.

0

Usamos $Revision: 9584 $ en algunos de nuestros archivos fuente y la revisión se actualiza cada vez que cambia la revisión de ese archivo en particular. Pero estoy bastante seguro de que querías decir algo diferente.

+0

Hola, tengo un problema con esto, ¿podría echar un vistazo a mi pregunta? Https://stackoverflow.com/questions/48767046/netbeans-svn-commit-keywoards-not-updating – Patrick

16

Subversion admite varias palabras clave como $Id$, $Author$, $Revision$ y así sucesivamente. Para usar los que necesita, set the svn:keywords property en consecuencia. Sin embargo, no puede insertar el comentario de confirmación como $Log$. Vea el subversion FAQ por las razones al respecto, y solo puedo estar de acuerdo con las razones que se dan allí.Poner los comentarios de compromiso en el archivo simplemente se rompe por diseño, y cualquier comentario es incorrecto en el momento en que no puede verificarlo en el repositorio.

Otros sistemas de control de versiones tampoco son compatibles con esto, y la mayoría de ellos con un razonamiento similar (por ejemplo, git).

Por favor, no discuta que algo así sea un "requisito para el proyecto". Si el código liberado debe incluir un historial de cambios, puede agregar este historial al crear la versión con cierta secuencia de comandos de ayuda bastante fácilmente. Al menos, la subversión simplemente no lo admite. Y me gustaría fuertemente desalentar tratar de lograr esto con un gancho pre-commit. Los ganchos de compromiso deben nunca cambiar los datos que se confirman.

+3

¿Puede explicar por qué? –

Cuestiones relacionadas