¿Cambiar el mensaje de confirmación de SVN de forma retroactiva?

85

Me gustaría volver a escribir una gran cantidad de mensajes de confirmación SVN en una estructura diferente, por ejemplo, prefijar una categoría. Desde:

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

yo quiero

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

¿Existe una manera fácil de hacer esto que no incluya volcar todo el repositorio usando svndumpfilter?

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

Pekka
fuente

Respuestas:

98

Sí, los mensajes de confirmación se pueden cambiar. Se implementan como propiedades en las revisiones, de forma similar a las propiedades de archivo normales.

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".

JesperE
fuente
+1 Gracias por esto. Hice un trabajo que involucró algunos cambios de API que quería comprometer por separado con el resto, y escribí el mensaje de registro para reflejar eso ... antes de comprometer accidentalmente todo el lote. ¡Lo "arreglé" realizando un cambio de espacio en blanco con un mensaje de registro que explicaba el resto! la próxima vez, sabré qué hacer.
Ed Daniel
1
También le di un +1, pero luego no funcionó con un mensaje "El repositorio no ha sido habilitado para aceptar cambios de propiedad de revisión; pida al administrador que cree un gancho de cambio previo a revprop". ¿El administrador sabrá automáticamente lo que se debe hacer?
J.Merrill
19
¿ Me está preguntando si tiene un administrador de Subversion competente? :)
JesperE
@ J.Merrill Tienes que buscar la hookscarpeta en la ubicación del repositorio y cambiar el nombre pre-revprop-change.tmpla pre-revprop-change.batpara que funcione.
sa_leinad
59

Ciertamente, puede cambiar los mensajes de registro de forma retroactiva, se trata en las Preguntas frecuentes . No estoy seguro de cómo funciona la interfaz de línea de comandos para VisualSVN, pero para vanilla svn el comando sería

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

Si desea hacer esto para todas las revisiones sin descargar el repositorio y volver a cargar, puede escribir este comando para trabajar en una lista de todas las revisiones. Llevaría algún tiempo hacerlo de esta manera, 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 volcado y recarga.

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

Adam Bellaire
fuente
3
Gracias @kazark, tuve que hacer svn propedit -r N --revprop svn:logpara poder cambiar el mensaje en mi editor.
tutuDajuju
3
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 de manera predeterminada. Para permitirlo, el administrador de svn debe crear un gancho llamado "pre-revprop-change" . Esta información se encuentra en las preguntas frecuentes como se mencionó anteriormente.
Matthias
en Windows, deberá configurar la variable de entorno "SVN_EDITOR", "VISUAL" o "EDITOR" antes de ejecutar el comando. Por ejemplo:set SVN_EDITOR=notepad.exe
Escrito el
26

Sí, puede, 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 solo cambios en las propiedades del registro. Para habilitarlo, cambie el nombre del archivo a pre-revprop-change y hágalo ejecutable (supongo que es una subversión alojada en POSIX, si está usando Windows para hospedar, este mensaje puede resultarle útil).

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

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

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

URLarriba es opcional si ya está en un directorio de trabajo. Entonces aparecerá un editor para que se pueda cambiar el mensaje.

Raffi Khatchadourian
fuente
1

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

Si tiene un mensaje de error "una solicitud DAV falló" , eche un vistazo a la respuesta de Andrew Aylett y vaya a editar "pre-revprop-change.tmpl" en el subdirectorio de enlaces de su repositorio.

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

Julien B.
fuente