¿Hay alguna manera de editar el mensaje de registro de una determinada revisión en Subversion? Accidentalmente escribí el nombre de archivo incorrecto en mi mensaje de confirmación que podría ser confuso más tarde.
He visto ¿Cómo edito un mensaje de confirmación incorrecto en Git? , pero la solución a esa pregunta no parece ser similar para Subversion (según svn help commit
).
pre-revprop-change
script que permite al usuario que se compromete a modificar su registro hasta 3 horas después de la confirmación. Este es un excelente compromiso entre la flexibilidad / registros precisos y el mantenimiento de la fidelidad del repositorio: wandisco.com/svnforum/threads/…svn propset dummyproperty 1 yourfile; svn commit yourfile -m yourmessage
Respuestas:
Esencialmente, debe tener derechos de administrador (directa o indirectamente) sobre el repositorio para hacer esto. Puede configurar el repositorio para permitir que todos los usuarios hagan esto, o puede modificar el mensaje de registro directamente en el servidor.
Consulte esta parte de las Preguntas frecuentes sobre Subversion (énfasis mío):
fuente
Cuando ejecutas este comando,
y por si acaso ves este mensaje:
Es porque Subversion no le permite modificar los mensajes de registro porque no están versionados y se perderán permanentemente.
SVN alojado en Unix
Vaya al directorio de ganchos en su servidor de Subversion (reemplace ~ / svn / reponame con el directorio de su repositorio)
Eliminar la extensión
Hazlo ejecutable (¡no puede hacer chmod + x!)
Fuente
SVN alojado en Windows
Los archivos de plantilla en el directorio de ganchos no se pueden usar ya que son específicos de Unix. Debe copiar un archivo por lotes de Windows
pre-revprop-change.bat
en el directorio de ganchos, por ejemplo, el que se proporciona aquí .fuente
Aquí hay una variación útil que no veo mencionada en las preguntas frecuentes. Puede devolver el mensaje actual para editarlo especificando un editor de texto.
fuente
svn: Repository has not been enabled to accept revision propchanges; ask the administrator to create a pre-revprop-change hook
fuente
Recientemente me encargaron esto también.
Queríamos permitir que nuestros programadores modificaran solo sus propios mensajes de confirmación y restringir cuánto tiempo atrás se les permite hacerlo. Decidimos que se les permitiría modificar cualquier mensaje de registro comprometido ese día, corregir errores tipográficos, etc.
Después de mirar un par de otros ejemplos en línea, pirateé esto juntos, estamos en un entorno de Windows, así que este es nuestro contenido de
pre-revprop-change.bat
:Editar: La idea original para esto vino de este hilo :
fuente
if /I not '%DATESTAMPDAY%'=='%DAY%' goto ERROR_MSGTOOOLD
, tuve que cambiar a comillas dobles alrededor de las dos variables. (No creería cuánto tiempo tardó en averiguarlo). De lo contrario, obtendría cosas como "== '02' es inesperado en este momento" (el segundo día del mes). Mi lote no es lo suficientemente fuerte como para saber por qué sucede eso, pero en caso de que alguien más tenga problemas extraños, puede ayudar.En Windows, utilizando el cliente Tortoise SVN:
Si no funciona, podría deberse a la forma en que se configura SVN en el servidor, lea otras respuestas aquí.
fuente
Si está utilizando un IDE como eclipse, puede utilizar esta manera fácil.
En eso
right click on the revision id for your commit and select 'Set commit properties'
.Puede modificar el mensaje como desee desde aquí.
fuente
Si su repositorio permite configurar las propiedades de revisión a través del enlace pre-revprop-change, puede cambiar los mensajes de registro mucho más fácilmente.
O en TortoiseSVN, AnkhSVN y probablemente muchos otros clientes de subversión haciendo clic derecho en una entrada de registro y luego 'cambiar mensaje de registro'.
fuente
Las Preguntas Frecuentes de Subversion cubren esto, pero usa un montón de términos confusos e indefinidos, como
REPOS_PATH
sin dar ningún ejemplo real.Puede tomar algunos intentos para que funcione, así que guarde su mensaje de confirmación actualizado en un archivo. A diferencia de los
svn-commit.tmp
archivos, Subversion no conservará su escritura si hay un problema.En su directorio de trabajo, ejecute
svn propedit -r N --revprop svn:log
para editar el mensaje de confirmación. Si eso funciona, ¡genial! Pero probablemente no lo hará, porque la
svn:log
propiedad de revisión no está versionada y Subversion de forma predeterminada evitará que la sobrescriba, ya sea con el script de enlacepre-revprop-change
o con un mensaje de error que indica que no tiene dicho enlace.Para cambiar los ganchos, necesita acceso al sistema de archivos en el que está alojado el repositorio.
svn info
le dirá la raíz del repositorio. Supongamos que es~/svnrepo
.cd
a~/svnrepo/hooks
pre-revprop-change
opre-revprop-change.bat
script? Si es así, comente temporalmente la parte que se cancela si intenta cambiarsvn:log
.De lo contrario, en Windows, cree un archivo en blanco llamado
pre-revprop-change.bat
. Aquí hay una forma de hacer eso:De lo contrario, en Unix, ejecute
En la copia de trabajo,
svn propedit -r N --revprop svn:log
vuelva a ejecutar~/svnrepo/hooks/svn-revprop-change
(.bat
)fuente
Encontré una buena implementación del gancho del servidor pre-rev-prop-change en el svnforum: https://www.svnforum.org/forum/opensource-subversion-forums/scripts-contributions/8571-pre-revprop-change -shell-script-permite-commiters-to-change-own-log-within-x-hours
Implementa
Agarrar desde allí y editar a voluntad. Prefiero no copiarlo aquí, ya que no soy el autor original y no hay ningún aviso de derechos de autor que me permita hacerlo.
fuente