Pregunta

Me parece estar llegando a ninguna parte con esto. O bien buscar en la web para un script, etc. Alguien tiene un script que sólo se puede editar el fuera de cuadro de pre-commit.tmpl en un entorno Windows que requiere x caracteres para su incorporación a un comentario en comprometerse en la tortuga de Subversion a nivel mundial para que todos los miembros del equipo se requiere que este requisito se empuja hacia abajo a los clientes desde el servidor SVN?

No sé el lenguaje de script y esto debería ser algo muy muy sencilla sin mí tomarse el tiempo para averiguar secuencias de comandos para los próximos 3 horas.

¿Fue útil?

Solución

Este es un archivo .bat para requerir hay un comentario. Se comprueba la existencia de al menos un carácter en el comentario.

 @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           

 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 enter a comment. 1>&2  
 echo Write a log message describing the changes made and try again. 1>&2
 echo Thanks 1>&2
 exit 1

Este archivo se encuentra en la carpeta / ganchos del repositorio, llamado pre-commit.bat. Si necesita una cantidad mínima de caracteres, la línea a modificar es

svnlook log %REPOS% -t %TXN% | findstr . > nul

Así que si quería un mínimo de 10 caracteres, es necesario tener 10. Es más que un solo

svnlook log %REPOS% -t %TXN% | findstr .......... > nul

opciones avanzadas para el comando findstr le permitirá hacer más elegante cheques (conjuntos cierto carácter, ect)

Otros consejos

SubversionNotify , probablemente hace más de lo que necesita, pero es bastante fácil de configurar .

Prueba esto:

rem Make sure that the log message contains some text.
set REPOS=%1
set TXN=%2

"C:\Program Files\Subversion\bin\SVNlook.exe" log -t %TXN% %REPOS% | FindStr [a-zA-Z0-9]  
IF %ERRORLEVEL% EQU 0 GOTO OK  
echo Your commit has been blocked because you didn't provide a 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  

:OK  
rem -------------------------------------------------------------  
rem Check if comment is in list of reserved words to not be used..  
rem -------------------------------------------------------------  

"C:\Program Files\Subversion\bin\SVNlook.exe" log -t %TXN% %REPOS% >comment  
setlocal enabledelayedexpansion  
Set SEPARATOR=  
set COMMENT=  
for /f "delims=" %%a in (comment) do (      
    set currentline=%%a  
    set COMMENT=!COMMENT!%SEPARATOR%!currentline!  
)  

FIND "%COMMENT%" "C:\Program Files\Subversion\excludedwords.txt">Null  
If %ERRORLEVEL% EQU 1 goto OK2  

:Fail  
echo Your commit has been blocked because the single word comment you provided is not allowed 1>&2  
echo Line is -%COMMENT%- 1>&2  
echo Please write a proper log message describing the purpose of your changes and 1>&2  
echo then try committing again. -- Thank you 1>&2   
exit 1  


:OK2  
rem -------------------------------------------------------------  
rem Check number of words on the line if = 2 then reject comment  
rem -------------------------------------------------------------  
Set VAR1=%COMMENT%  
Set count=0  
For %%j in (%VAR1%) Do Set /A count+=1  
IF %count% EQU 2 goto Fail2  
goto OK3  

:Fail2  
echo Your commit has been blocked because not enough detail supplied 1>&2  
echo Please write a longer log message describing the purpose of your changes and 1>&2  
echo then try committing again. -- Thank you 1>&2   
exit 1  

:OK3  
rem -------------------------------------------------------------  
rem Check that the author of this commit has the rights to perform  
rem -------------------------------------------------------------  
rem the commit on the files and directories being modified.  
rem commit-access-control.pl "$REPOS" "$TXN" commit-access-control.cfg || exit 1  

rem All checks passed, so allow the commit.  
exit 0  

Tengo un pre-commit gancho que puede hacer exactamente lo usted quiere. Más mucho más.

  • Puede especificar una longitud mínima de cometer comentario.
  • Se puede sincronizar el mensaje de consignación contra una expresión regular . No sólo se puede especificar una longitud, pero también se puede especificar ciertos parámetros. Por ejemplo, ¿el commit comentario contiene una serie de errores que utiliza el sistema de seguimiento de defectos, por lo que puede rastrear el cambio a un defecto en particular?

También le permite hacer lo siguiente:

  • Establecer diversos permisos cometen contra los archivos o directorios específicos:
    • lectura-escritura . Usuario puede pagar y cometer estos artículos
    • de sólo lectura . El usuario puede pago y envío este artículo, pero no puede confirmar los cambios
    • añadir sólo : El usuario puede añadir un directorio a través de svn cp, pero no cometer ningún cambio. Esto es perfecto para el directorio /tags donde se le permite hacer una etiqueta, pero no modificar la etiqueta.
    • sin eliminar . Los usuarios puede confirmar los cambios y añadir nuevos archivos, pero no eliminar estos archivos
    • sin añadir . Los usuarios sólo pueden confirmar los cambios, y no añadir o eliminar archivos en un compromiso

Y, también le permite hacer esto:

  • Ban nombres de archivos a través de ciertas expresiones regulares de globbing ,
  • Exigir a ciertos archivos o directorios tienen una propiedad particular establecido en un valor particular. Muy útil para cosas como asegurarse de que los scripts de shell de Unix, Unix Makefiles y Windows archivos por lotes tienen la línea correcta finalización o svn:ignore se establece, por lo que los usuarios no se comprometen en forma accidental archivos no deben comprometerse.
  • requieren ciertas propiedades revisiones a ser establecidos con ciertos valores. Así es como se comprueba cometer mensajes, pero diciendo que svn:log debe coincidir con ciertas expresiones regulares.

Esta pre-commit guión está escrito en Perl. Por defecto, Perl incluye servidores Unix, Mac y Linux. Por desgracia, no se incluye en equipos Windows. Afortunadamente, hay varios de código abierto, libre y fácil de instalar los paquetes de Perl para la PC, como ActivePerl y Strawberry Perl

En Windows, puede utilizar el VisualSVNServerHooks.exe check-logmessage gancho que viene con VisualSVN Server y se encuentra en el directorio de %VISUALSVN_SERVER%bin pre-commit. Esta sencilla herramienta le ayudará a definir el número mínimo de caracteres permitidos en el mensaje de registro.

Vea el artículo KB140: La validación de los mensajes de registro en el servidor de VisualSVN para obtener instrucciones .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top