tortoise tag from create svn repository svn-hooks

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:

  1. El nombre del gancho
  2. Lo que hace el script
  3. 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

  1. pre-revprop-change.bat
  2. 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

  1. pre-revprop-change.bat
  2. 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

  1. pre cometido
  2. 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

  1. El nombre del hook = precompromiso
  2. 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

  1. El nombre del hook = post-commit
  2. 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