from - tag svn
Ganchos SVN para Windows (9)
Este gancho evita los commits a una rama específica
( branch-16E en este caso):
setlocal
rem Subversion sends through the path to the repository and transaction id
set REPOS=%1
set TXN=%2
rem Committing to a branch is not allowed
svnlook changed -t %TXN% %REPOS% | findstr "//branch-16E"
if %errorlevel% EQU 0 goto errb else exit 0
:errb
echo. 1>&2
echo This branch was closed. If you want to commit here contact your administrator. 1>&2
exit 1
Hice un poco de google y descubrí que no hay realmente un recurso de enlaces de SVN para Windows. Así que pensé que comenzaría una wiki aquí para centralizarla.
Si contribuye, asegúrese de indicar:
- El nombre del gancho
- Lo que hace el script
- La secuencia de comandos real
NOTA: sospecho que publicar un script épico no será útil.
Evita las ediciones de accesorios de revisión que no sean svn :: log
- pre-revprop-change.bat
- Evita las modificaciones en las propiedades de revisión que no sean svn :: log
@ECHO OFF
:: Set all parameters. Even though most are not used, in case you want to add
:: changes that allow, for example, editing of the author or addition of log messages.
set repository=%1
set revision=%2
set userName=%3
set propertyName=%4
set action=%5
:: Only allow the log message to be changed, but not author, etc.
if /I not "%propertyName%" == "svn:log" goto ERROR_PROPNAME
:: Only allow modification of a log message, not addition or deletion.
if /I not "%action%" == "M" goto ERROR_ACTION
:: Make sure that the new svn:log message is not empty.
set bIsEmpty=true
for /f "tokens=*" %%g in (''find /V ""'') do (
set bIsEmpty=false
)
if "%bIsEmpty%" == "true" goto ERROR_EMPTY
goto :eof
:ERROR_EMPTY
echo Empty svn:log messages are not allowed. >&2
goto ERROR_EXIT
:ERROR_PROPNAME
echo Only changes to svn:log messages are allowed. >&2
goto ERROR_EXIT
:ERROR_ACTION
echo Only modifications to svn:log revision properties are allowed. >&2
goto ERROR_EXIT
:ERROR_EXIT
exit /b 1
Impedir las ediciones para accesorios de revisión que no sean svn :: log
- pre-revprop-change.bat
- Impide modificaciones en las propiedades de revisión que no sean svn :: log (versión alternativa)
Fuente:
rem Only allow log messages to be changed.
if "%4" == "svn:log" exit 0
echo Property ''%4'' cannot be changed >&2
exit 1
Prevenir confirmaciones con comentarios vacíos
- pre cometido
- evita confirmaciones con comentarios vacíos
Fuente:
"c:/Program Files/Subversion/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
exit 0
Verificaciones de mensajes de compromiso "perezosos" comunes
- El nombre del hook = precompromiso
- Lo que hace el script = Verifique si hay una línea en blanco o ''.'' línea. También verifique que un archivo de palabras no sea el único comentario.
La secuencia de comandos real
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 Check if comment is in list of reserved words to not be used..
"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 Check that the author of this commit has the rights to perform
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
Archivo de palabras de muestra excluida: actualización actualizada actualizada. Actualizado. Fix arreglo Fix. fijar. .. ... . . . ordenado ordenado Ordenado ordenado
etc, etc, etc.
Inicié un repositorio de ganchos usando C #. Mi primer gancho fue uno para enviar avisos de verificación a una fuente RSS: SubversionRss Actualmente estoy trabajando en un gancho post-commit para enviar cheques en avisos a un feed de Twitter.
Me gusta usar subHooker, que está codificado en java. Proporciona funcionalidad de enlace pre y post commit.
Pre cometido:
- Aplica el requisito de confirmación del mensaje, o la longitud mínima o ambos (o no)
- Puede hacer cumplir los requisitos de expresión de RegEX en el mensaje de confirmación, es bueno para requerir un número de registro de respaldo o defecto (o no)
Comet Post:
- Enviar mensajes de correo electrónico HTML o sin formato
- Tanto los mensajes simples como los html usan un sistema de plantillas
- Puede activar o desactivar diff
- Puede activar o desactivar el cambio
- apoya la localización
- admite el registro estandarizado.
Puede encontrarlo en google code @ http://code.google.com/p/subhooker/
Es gratis, y sí, soy el autor. Hace algunos años que corro la subversión, me encanta, y por eso estoy contribuyendo con esto a la comunidad.
Para los desarrolladores de .NET que usan Subversion en Windows, Phil Haack publicó sobre CaptainHook .
CaptainHook es un marco de complemento simple para escribir enlaces de Subversion usando .NET
El proyecto está alojado en Source Forge
* ACTUALIZACIÓN: esto ya no funciona, ya que Twitter ha desaprobado la autenticación de nombre de usuario / contraseña a favor de OAuth. *
Publica información de compromiso en Twitter
- El nombre del hook = post-commit
- Lo que hace el script = publica la revisión, el autor y el mensaje de compromiso en Twitter
Notas de uso:
- Reemplace twitterUsername y twitterPassword con su Twitter actual
- Esto se prueba con VisualSVN, y la única forma en que pude hacer que funcionara era volcar todo en una ruta codificada, c: / hook / post-commit . Puede cambiar eso a cualquier ruta a la que VisualSVN tenga acceso de lectura / escritura.
- Requiere que Wget sea instalado. El instalador se puede descargar here
- Comentarios y mejoras bienvenidos. Este es mi primer gancho SVN en Windows y mi GAWD fue un dolor.
La secuencia de comandos real
echo status= > c:/hook/post-commit/msg.txt
echo Rev#%2 by >> c:/hook/post-commit/msg.txt
"%VISUALSVN_SERVER%/bin/svnlook.exe" author -r %2 %1 >> c:/hook/post-commit/msg.txt
"%VISUALSVN_SERVER%/bin/svnlook.exe" log -r %2 %1 >> c:/hook/post-commit/msg.txt
"c:/Program Files (x86)/GnuWin32/bin/wget.exe" --user=twitterUsername --password=twitterPassword --post-file=c:/hook/post-commit/msg.txt --append-output=c:/hook/post-commit/log.txt --output-document=c:/hook/post-commit/download.txt --delete-after http://twitter.com/statuses/update.xml