2009-12-18 21 views
6

A menudo veo un montón de confirmaciones, pero no hay notas que hagan referencia a los tickets ... Y así termino volviendo atrás y revisando el diff manualmente. No necesariamente es malo, pero sería bueno tener notas. ¿Algunas ideas?¿Cómo puedo obligar a nuestros desarrolladores a ingresar notas cuando se comprometen a través de TortoiseSVN?

+1

Es posible que aún tenga problemas incluso cuando necesite notas. Mucha gente termina poniendo "Actualizado" o similar.Si aún no lo ha hecho, vale la pena explicar a todos los desarrolladores cómo esos comentarios pueden ayudar a largo plazo. p.ej. poder ver la motivación para un cambio dentro de un año. – Shaun

+0

Véase también [Creación de un gancho de comentario requerido para Tortoise SVN] (http://stackoverflow.com/questions/1208900/creating-a-required-comment-hook-for-tortoise-svn). –

Respuesta

2

Claro, pero ¿cómo va a hacer cumplir los mensajes de compromiso no galimaticos, significativos y contextualizados?

Mejor golpee a sus compañeros de trabajo irresponsables cuando note una comisión coja/vacía. O el equivalente verbal de golpe. Solo asegúrate de que se sientan mal, se lo merece.

+2

Es cierto que un script precomprometido no impedirá que las personas tipeen "proyecto actualizado" en el cuadro, pero he visto los mensajes de compromiso pasar del 90% vacío al 90% mensajes razonables aquí después de implementar uno. Tienes que hacer menos puñetazos si tienes un script de precompromiso. –

+1

Cattleprods por encargo solo para este propósito. –

5

Puede definir una secuencia de comandos de enlace de precomisión que rechaza todas las confirmaciones con un mensaje de registro vacío o demasiado corto.

Aquí hay un post sobre cómo hacerlo.

1

He utilizado una secuencia de comandos de enlace precompromiso para garantizar que un comentario de compromiso siempre se refiera a un número de problema en el sistema de seguimiento de problemas. Por ejemplo, se aceptará un comentario como

fixes frobulator when the moon is full (bug 1234)

porque contiene un número de error. Incluso con este acuerdo, aún debe confiar en el desarrollador para insertar un comentario significativo y un número de error.

+0

1.6 ahora incluye coincidencia reg-ex de números de error y puede generar una advertencia si no se encuentra un número de error (no lo rechazará, pero es mejor que nada). –

1

Nuestra pre-commit hookscript (ventanas batch):

@echo off & setlocal ENABLEEXTENSIONS 

set SVNLOOK="E:\Subversion\Program\Subversion 1.5.0\bin\svnlook.exe" 

set REPOS=%1% 
set TXN=%2% 
set LOGFILE=%REPOS%\hooks\log-%TXN%.txt 
set GREP=E:\UnxUtils\usr\local\wbin\grep.exe 

%SVNLOOK% log -t "%TXN%" "%REPOS%" >%LOGFILE% 

set "first=" 
for /f "delims=" %%a in ('more ^< "%LOGFILE%"') do (
    if not defined first set first=%%a 
) 

del %LOGFILE% 

if not defined first (echo "Please supply a commit comment" >&2 & exit 1) 





REM Check for invalid windows characters in the path 
echo Checking >%LOGFILE% 
%SVNLOOK% changed -t "%TXN%" "%REPOS%" | find "\" >>%LOGFILE% 
%SVNLOOK% changed -t "%TXN%" "%REPOS%" | find ":" >>%LOGFILE% 
%SVNLOOK% changed -t "%TXN%" "%REPOS%" | find "*" >>%LOGFILE% 
%SVNLOOK% changed -t "%TXN%" "%REPOS%" | find "?" >>%LOGFILE% 
%SVNLOOK% changed -t "%TXN%" "%REPOS%" | find """" >>%LOGFILE% 
%SVNLOOK% changed -t "%TXN%" "%REPOS%" | find "^>" >>%LOGFILE% 
%SVNLOOK% changed -t "%TXN%" "%REPOS%" | find "^<" >>%LOGFILE% 
%SVNLOOK% changed -t "%TXN%" "%REPOS%" | find "^|" >>%LOGFILE% 

set "first=" 
for /f "delims=" %%a in ('more +1 ^< "%LOGFILE%"') do (
    if not defined first set first=%%a 
) 

del %LOGFILE% 

if defined first (echo "Please do not use filename characters which are invalid in windows. - Found %first%" >&2 & exit 1) 






REM Tagblock - prevent changes to tag directories 
echo Checking >%LOGFILE% 
%SVNLOOK% changed -t "%TXN%" "%REPOS%" | %GREP% "^U.*\/tags\/.*" | %GREP% -v -f "%REPOS%\conf\tag-block-exceptions.txt" >>%LOGFILE% 

set "first=" 
for /f "delims=" %%a in ('more +1 ^< "%LOGFILE%"') do (
    if not defined first set first=%%a 
) 

del %LOGFILE% 


if defined first ( 
    echo "%first% -- Error: Modifications to tag directories are blocked. To allow these modifications add the path to %REPOS%\conf\tag-block-exceptions.txt" >&2 
    exit 1) 
6

No TortoiseSVN, pero Subversion en sí - un entorno en el servidor. Puede configurar un enlace precompromiso que refuerza un comentario de compromiso. También hay ganchos de precompromiso que verificarán la presencia de una referencia a un sistema de seguimiento de problemas como Jira si desea ir un paso más allá.

+3

TortoiseSVN tiene la propiedad tsvn: logminsize. Si configura esa propiedad, p. 10, luego el botón OK permanecerá deshabilitado hasta que se ingresen al menos 10 caracteres como mensaje de confirmación. – Stefan

+0

+1 por sugerencia de Stefan. He utilizado ganchos de precompromiso durante un tiempo, pero esto evitará que los desarrolladores se quejen de que solo ven el mensaje de error de confirmación DESPUÉS de que se hayan enviado todos los cambios al servidor. – Michael12345

0

TortoiseSVN es un cliente, es posible que desee force comments on the subversion server. O puede decirles que comenten sus compromisos.

+0

Ese es el mismo enlace que originalmente marqué cuando construí mi script, el único problema que tuve fue que requiere una ruta directa para la función de llamada. – Nate

3

Necesita utilizar un enganche precompromiso que es una configuración de servidor, he escrito uno para VisualSVN, que es básicamente un archivo por lotes; scripts similares están disponibles para servidores SVN que no están basados ​​en Windows.

@echo off 
:: 
:: Stops commits that have empty log messages. 
:: 
@echo off 
setlocal 

rem Subversion sends through the path to the repository and transaction id 
set REPOS=%1 
set TXN=%2 

rem check for an empty log message 
call "C:\program files\visualsvn server\bin\svnlook" log %REPOS% -t %TXN% | findstr . > nul 
if %errorlevel% gtr 0 (goto err) else exit 0 

:err 
echo. 1>&2 
echo Your commit has been blocked because you didn't give any log message 1>&2 
echo Please write a log message describing the purpose of your changes and 1>&2 
echo then try committing again. -- Thank you 1>&2 
exit 1 
1

Puede forzar un comentario comprometerse con bastante facilidad, pero lo que va a terminar con un millón de commits es que dicen "depuración" o "prueba".

Si sus desarrolladores no ven el valor de agregar mensajes de confirmación forzándolos a escribir , algo no va a cambiar eso.

Lo que es peor es cuando los usuarios de Eclipse tienen SVN/CVS integrado, de modo que recuerda su último mensaje de confirmación, y terminan asignando un archivo completamente no relacionado con el mensaje de su última tarea/proyecto.

Cuestiones relacionadas