Anteponer a la plantilla de logging de subversión

La subversión de línea de command tiene la característica conveniente de mostrar una especie de "plantilla" de comprobación (en el editor especificado con la variable de entorno SVN_EDITOR) al ejecutar svn ci :

 (blank line) --This line, and those below, will be ignonetworking-- M src/myfile.c A src/otherfile.c 

Me encanta esta function porque ofrece un resumen rápido de los cambios que se deben confirmar sin tener que ejecutar el svn status y filtrarlos ? resultados.

Lo que me gustaría hacer es grep algunas cosas del post de logging de compromiso anterior y anteponerlo al post, así:

 Some stuff I grepped from the previous log message. --This line, and those below, will be ignonetworking-- M src/myfile.c A src/otherfile.c 

Consideré crear un script que crea este post de logging manualmente parsing el resultado del svn status de svn status y luego lo quita antes de que se realice la confirmación real, pero parece que puede ser demasiado complejo o estropear alguna otra característica de la herramienta de logging. . ¿Hay una manera mejor / más simple?

Hay un par de maneras en que podrías hacer esto. svn ci toma un post de compromiso como argumento con el indicador -m para que pueda preparar su post y pasarlo como una cadena. Algo como esto:

 $ svn ci -m "$(svn log | grep Magic\ Text)" 

checkin también toma un nombre de file con -F , por lo que también podría hacer algo como esto:

 $ svn log | grep Magic\ Text > temp.log $ svn ci -F temp.log $ rm temp.log 

O bien, si no desea tratar con un file temporal, solo pasa - como el argumento a -F hace que checkin lea de stdin :

 $ svn log | grep Magic\ Text | svn ci -F - 

— EDITAR —

Parece que esto no es exactamente lo que querías. Si quería una forma de "enganchar" básicamente en la confirmación y editar la plantilla de post de confirmación, esto debería funcionar para usted. Cuando se ejecuta svn commit , crea un file llamado svn-commit.tmp en el directory actual. Podemos anular la variable de entorno $SVN_EDITOR para usar un script personalizado que edite el file svn-commit.tmp y luego nos permita editarlo más. Esto es lo que funcionó para mí.

Crea un file en alguna parte (tal vez en $ HOME / bin o algo así) que será tu nuevo $SVN_EDITOR . Coloque esto dentro de ella:

 #!/bin/bash svn log | grep Whatever > svn-commit2.tmp cat svn-commit.tmp >> svn-commit2.tmp mv svn-commit2.tmp svn-commit.tmp vi svn-commit.tmp 

Ahora en tu caparazón, o en tu ~/.bashrc coloca la siguiente línea:

 export SVN_EDITOR="$HOME/bin/your_editor.sh" 

Asegúrate de get tu bashrc si lo pones allí.

 $ source ~/.bashrc 

Ahora cuando haces una confirmación, debería tener algunas líneas adicionales allí. Esta es una especie de solución hacky, pero funciona.