Publi

Cambiar el comentario de un commit en SVN

Es algo muy común cuando trabajas con un sistema de control de versiones como subversion, equivocarte en la descripción (puede ser un error tipográfico, omisión de datos, o cualquier cosa, ¡que somos humanos!) a la hora de hacer un commit.

Y después de mucho equivocarme he decidido hacer un post sobre ello. Lo que tenemos que hacer es lo siguiente:

$ svn propset svn:log –revprop -r [número de revisión] «Nueva descripción»

(revprop lleva dos guiones)

Así de sencillo, aunque puede que tengamos problemas si el servidor no está configurado para soportar la modificación del log, por lo que tendrás que pedirle a tu administrador que lo habilite.

Aunque si tú eres el administrador, puedes intentar lo siguiente:

  • Entramos en el directorio del repositorio, por ejemplo $HOME/svn/repository/$repo
    Donde $repo puede ser el nombre de tu repositorio. No siempre tiene que estar en $HOME, es sólo un ejemplo.
  • Luego, en el directorio hooks/ (podemos entrar en el directorio directamente, pero quise separar la entrada al repositorio con la de hooks)
  • Seguramente, tendrás plantillas (templates) de hooks, en concreto tendremos que renombrar pre-revprop-change.tmpl a pre-revprop-change:

    $ mv pre-revprop-change.tmpl pre-revprop-change

  • Damos permisos de ejecución (es un script):

    chmod +x pre-revprop-change

Ya está, ya podremos utilizar la modificación del log de svn para modificar los comentarios de nuestros commits.

Trac

Si usas trac vinculado con subversion. Podrás comprobar que si cambiamos el comentario de un commit, éste no aparecerá en la web de trac, esto es porque una vez que sucede el commit y trac lo lee, guarda una copia de la información recogida y trac utilizará su copia. Para ello, debemos resincronizar los datos de svn con los de trac, y esto lo haremos ejecutando lo siguiente:

$ trac-admin /ruta/de/trac/proyecto/ resync

Donde /ruta/de/trac/proyecto es la ruta donde estará nuestro proyecto contemplado dentro de trac.

Esto tendríamos que ejecutarlo siempre que se cambiara una descripción de un commit, es un proceso algo lento (si tenemos muchos commits), y hay que ejecutarlo en el servidor, por lo que es un poco incómodo, por eso, podemos crear una tarea cron para ejecutar el comando cada cierto tiempo (1, 2, 4 veces al día, por ejemplo). De la siguiente manera:

$ crontab -e

Ahí editamos el archivo y escribimos:

30 3 * * * trac-admin /ruta/de/trac/proyecto/ resync

Actualización 30/10/2012 : Actualizado el comando para cambiar el comentario, (faltaba un -r)

y guardamos, así ejecutaremos el script todos los días a eso de las 3:30 una hora en la que nuestro servidor puede que esté un poco más ocioso.

También podría interesarte....

There are 4 comments left Ir a comentario

  1. Pingback: Bitacoras.com /

Leave a Reply