SVN Commit Pre Ganchos
-
05-09-2019 - |
Pregunta
Actualmente estoy tratando de ampliar nuestra ya existente (y de trabajo) antes de comprometerse archivo por lotes para comprometerse con SVN. Los primeros bloques parcial Cualquiera que comprometerse no tiene comentarios y funciona como se espera. La segunda parte es una attmept bloquear a los usuarios que cometen los archivos SUO, sin embargo, esto está bloqueando todos los envíos.
Mi comprensión de las oficinas descentralizadas de secuencias de comandos no es muy grande por lo que sospecho que puede ser mi uso de la findstr?
¿Alguien puede ayudar?
"C:\Program Files\VisualSVN Server\bin\svnlook.exe" log -t %2 %1 | FindStr [a-zA-Z0-9]
IF %ERRORLEVEL% EQU 0 GOTO OK
echo "Commit Comments are Required" >&2
exit 1
:OK
"C:\Program Files\VisualSVN Server\bin\svnlook.exe" diff -t %2 %1 | FindStr /R "[a-zA-Z]\.suo"
IF %ERRORLEVEL% EQU 0 exit 0
echo "SUO files cannot be committed" >&2
exit 1
Solución
findstr devuelve 0 si algo se ha encontrado, y 1 si no se ha encontrado. Usted acaba invertida su cheque.
No se requiere lotes-foo, incluso en Windows el shell es interactivo, por lo que puede intentar salir con vida:
>dir | findstr ".sln"
15.01.2009 16:37 33.844 Project.sln
>echo %ERRORLEVEL%
0
>dir | findstr ".slngimpf"
>echo %ERRORLEVEL%
1
Por cierto, resulta más fácil escribir
if errorlevel 0 andthencontinuewithwhatever
De este modo, la escritura también es estable frente al mal agüero:
set errorlevel=0
que luego destruir cualquier intento futuro para imprimir el nivel de error de% errorlevel% de una manera correcta.
( editar ) Nota importante: Se me olvidaba decir que el if errorlevel
comprobaciones de sintaxis si el nivel de error es mayor o igual con el valor siendo probado para. Así que para usar correctamente, debe comprobar siempre para el más alto de error en primer lugar, como:
someCommand
if errorlevel 10 ...
if errorlevel 9 ...
if errorlevel 0 ...
Otros consejos
No es exactamente la respuesta que busca, pero se puede bloquear todo * .suo archivos con el opción global-ignores .