2010-02-02 21 views
79

Me gustaría volver a escribir una gran cantidad de mensajes de compromiso de SVN en una estructura diferente, p. prefijo una categoría. De:¿Cambiar el mensaje de confirmación SVN retroactivamente?

"foo" now accepts "bar" format for connection string.

Quiero

core - database - "foo" now accepts "bar" format for connection string.

¿Hay una manera fácil de hacer esto hace que no incluyen vertido todo el repositorio usando svndumpfilter?

Estoy trabajando con TortoiseSVN en el extremo del cliente y VisualSVN en el extremo del servidor. (VisualSVN es un contenedor alrededor del clásico svn, con el que también puedo hablar a través de la línea de comandos).

Respuesta

91

Sí, los mensajes de compromiso se pueden cambiar. Se implementan como propiedades en las revisiones, de forma similar a las propiedades de archivo regulares.

En la ventana de registro de TortoiseSVN, puede hacer clic con el botón derecho en una confirmación y seleccionar "Editar mensaje de registro".

+0

+1 Gracias por esto. Hice un trabajo que involucraba algunos cambios de API que quería confirmar por separado con el resto, y escribí el mensaje de registro para reflejar eso ... antes de comprometer accidentalmente todo. ¡Lo "arreglé" al comprometer un cambio de espacio en blanco con un mensaje de registro que explicaba el resto! la próxima vez, sabré qué hacer. –

+1

También le di un +1, pero luego no funcionó con un mensaje "El repositorio no se ha habilitado para aceptar modificaciones de revisión, solicite al administrador que cree un enlace de cambio previo a la modificación". ¿El administrador sabrá automáticamente qué hacer? –

+19

¿Me está preguntando * me * si tiene un administrador competente de Subversion? :) – JesperE

57

Sin duda puede cambiar los mensajes de registro retroactivamente, está cubierto in the FAQ. No estoy seguro de cómo la interfaz de línea de comandos para VisualSVN funciona, pero para la vainilla SVN el comando sería

svn propset -r N --revprop svn:log "new log message" URL 

Si quieres hacer esto para todas las revisiones sin volcar el repositorio y volver a la carga, usted podría guión este comando para trabajar en una lista de todas las revisiones. Llevaría algo de tiempo hacerlo de esta forma, dependiendo del tamaño de su repositorio, pero en principio no hay ninguna razón por la que no pueda hacerlo, y no implica un vuelco y recarga.

Además, vanilla SVN tiene un comando svnlook que es una especie de herramienta administrativa que trabaja directamente con los archivos del repositorio. Esa herramienta no comprende las URL (debe tener acceso al repositorio del nivel del sistema de archivos), pero es mucho más rápido. La sintaxis es un poco diferente, pero puede modificar las propiedades de la misma manera con esa herramienta.

+2

Si quiere usar su editor: 'svn propedit -r N svn: log'. –

+3

Gracias @kazark, tuve que hacer '' 'svn propedit -r N --revprop svn: log''' para poder cambiar el mensaje en mi editor. – tutuDajuju

+2

Solo para agregar una nota: de manera predeterminada, ese comando no funcionará, porque ** los cambios en las propiedades de revisión ** no están permitidos por defecto. Para permitirlo, el administrador de svn debe crear un enlace llamado ** "pre-revprop-change" **. Esta información es [en las preguntas frecuentes] (http://subversion.apache.org/faq.html#change-log-msg) como se mencionó anteriormente. –

24

Sí, puede hacerlo, pero primero debe habilitarlo en el repositorio.

En el repositorio, en el directorio hooks, hay un archivo llamado pre-revprop-change.tmpl. Tiene un par de páginas de comentarios sobre lo que hace, y viene configurado para permitir cambios en las propiedades del registro. Para habilitarlo, cambie el nombre del archivo a pre-revprop-change y hágalo ejecutable (estoy asumiendo una subversión alojada en POSIX, si está usando Windows para alojar, puede encontrar útil el this message).

Una vez que el repositorio lo permite, puede usar Tortoise para cambiar el mensaje de registro para una confirmación desde el menú contextual en una confirmación, o puede usar la línea de comando.

+0

+1 Excelente información señor. No me dejará hacerlo sin un gancho de cambio previo a la revolución. Tendré que portar el script bash de la plantilla a Windows, pero eso no debería ser un problema. –

+0

Agregué un enlace a un script de comando de ejemplo: http://svn.haxx.se/users/archive-2006-03/0107.shtml –

1

Acabo de cruzar esta publicación con el problema exacto, usando el SVN de Trenton para el cliente y VisualSVN en un servidor de Windows.

Si le sucede que tiene un "una solicitud DAV fallidos" mensaje de error, dar un vistazo a Andrew Aylett's answer e ir edición de "pre-revprop-change.tmpl" ganchos en su subdirectorio del repositorio.

Una vez hecho esto, al presionar "editar el mensaje de registro" en el menú contextual ¡finalmente debería funcionar!

2

svn propedit -r N --revprop svn:log URL

URL anterior es opcional si ya está en un directorio de trabajo. Aparecerá un editor para que se pueda cambiar el mensaje.

Cuestiones relacionadas