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.