¿Qué tipos de scripts de gancho utilizan las personas para Subversion? Solo las ideas generales pero el código también serían geniales.Tipos comunes de ganchos de subversión
Respuesta
El más común creo que es permitir que las personas cambien los comentarios de revisión después de realizar una comedia.
Debe habilitar el script de enlace 'pre-revprop-change' para permitir eso. El ejemplo proporcionado, si está habilitado, permite editar solo la propiedad del comentario y solo ser el comitter original. Ideal para corregir errores tipográficos.
En mi lugar de trabajo, hemos configurado un enganche post-commit que genera fuentes RSS que se muestran en varios tableros y se usan para que los revisores de códigos sepan cuándo es el momento de revisarlo y para que podamos verlo los empleados están cometiendo lo suficiente.
Estoy usando los enganches post-commit (I think it's this one) para publicar un mensaje en un foro en Basecamp para cada confirmación. Dos ventajas:
A medida que el desarrollador principal, aparece un roll-up de confirmaciones todas las mañanas (a través del canal RSS de este foro campo base) y pueden ver lo que mi equipo ha estado haciendo bastante rápido.
Nuestra instalación de Trac/SVN está detrás de nuestro firewall, por lo que esto brinda a mis superiores en otros lugares una ventana a lo que estamos haciendo. Puede ser que no lo entiendo, pero a un gerente de una gran cantidad de actividad que parece ser, también, una gran cantidad de actividad;)
supongo que el resultado final de esto es similar a lo que está haciendo @Aviv.
Estoy buscando soluciones para construir el compromiso más reciente en un servidor por separado para la integración continua, pero voy a tener que cambiar la forma en que hacemos cambios a nuestro esquema de base de datos para que funcione.
Un gancho para notificar al sistema de gestión de errores/problemas de los cambios en el repositorio. Es decir. el mensaje de confirmación tiene un problema: 546 o una etiqueta similar que se analiza y se envía al sistema de gestión de errores.
Comprobamos lo siguiente con nuestros scripts de enganche:
- que un mensaje de registro de confirmación se ha suministrado
- Que un crítico ha sido especificado para la confirmación
- que ningún código o generados automáticamente el archivo prohibida tipos de tierra en el repositorio
- Enviar un correo electrónico a cabo cuando se crea una rama/etiqueta
todavía queremos implementar lo siguiente:
- enviar un correo electrónico cuando un usuario adquiere un bloqueo en un archivo
- Enviar un correo electrónico cuando el bloqueo ha sido robado
- enviar un correo electrónico a todo el mundo cuando una revisión propiedad ha sido cambiado
varias cosas que los utilizan para:
- la integración con el gestor de fallos (Trac in our case - un mensaje que dice cometen 'Cierra # 514' marca automáticamente ese fallo como cerrado
- la integración con la integración de construcción (buildbot in our case - una confirmación a una rama visto provoca una acumulación
- gancho pre-confirmación para validar el commit - usamos svnchecker. Se valida nuestro código Python para PEP8 correctness
- el envío de correos registros para una lista de correo
- ejecutan secuencias de comandos de sangría
Utilizamos FogBugz de seguimiento de fallos, que proporciona la subversión cometer secuencias de comandos que le permiten incluir un número de caso en su cheque en comentarios y luego asocia el error con el cheque que lo arregló. Requiere una instancia WebSVN para ser configurada para que tenga un visor basado en web para su repositorio.
Utilizamos una secuencia de comandos de confirmación de compromiso para activar nuestro robot de lanzamiento. Escribir nueva información de lanzamiento en un archivo llamado changes.txt en nuestros diferentes productos activará la creación de una etiqueta y los artefactos relevantes.
Tengo una configuración usando la biblioteca Ruby Tinder que envío a una sala de fogatas, si alguien quiere la secuencia de comandos, puedo publicar o enviarle el código.
Otros más comunes que he visto son publicaciones de sistemas de seguimiento de errores y notificaciones por correo electrónico.
Si usted tiene una mezcla de los usuarios de Unix y Windows que trabajan con el repositorio, os exhorto a utilizar el case-insensitive.py gancho pre-commit-script como medida de precaución. Evita situaciones difíciles de resolver donde svn updates fail for Windows users because of a file rename which only changed the case of the file name. Créame, hay una buena posibilidad de que le ahorrará problemas.
Esto fue discutido en la lista de correo de usuarios de subversión hace un tiempo. This publicación en particular tiene algunas ideas útiles.
Estoy utilizando el gancho pre-revprop-change
que permite volver atrás y editar comentarios y dicha información después de que se haya realizado la confirmación. Esto es muy útil si falta información/falla en los comentarios de confirmación.
Aquí publico un archivo por lotes pre-revprop-change.bat
para Windows NT o posterior ... Usted ciertamente puede mejorarlo con más modificaciones. También puede derivar una post-revprop-change.cmd
de ella a la vieja copia de seguridad snv:log
algún lugar o simplemente para añadir al nuevo registro ...
La única parte difícil era para ser capaz de analizar la realidad desde la entrada estándar el archivo por lotes. .. Esto se hace aquí con el comando FIND.EXE
.
El otro esto es que he tenido informes de otros usuarios de problemas con el uso del /b
con el comando exit
. Puede necesitar simplemente eliminar ese /b
en su aplicación específica si los casos de error no se comportan bien.
@ECHO OFF
set repos=%1
set rev=%2
set user=%3
set propname=%4
set action=%5
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Only allow changes to svn:log. The author, date and other revision
:: properties cannot be changed
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
if /I not '%propname%'=='svn:log' goto ERROR_PROPNAME
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Only allow modifications to svn:log (no addition/overwrite or deletion)
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
if /I not '%action%'=='M' goto ERROR_ACTION
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Make sure that the new svn:log message contains some text.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
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 properties are not allowed. >&2
goto ERROR_EXIT
:ERROR_PROPNAME
echo Only changes to svn:log revision properties 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
Gracias esto fue muy útil. – ziggy
De hecho, reagrupar todos mis anzuelos en una cuenta de github para que pueda mejorarse con el tiempo https://github.com/philibertperusse/subversion-hooks –
En lugar de permitir cualquier mensaje de registro no vacío, cómo hacerlo de modo que el mensaje de registro editado tiene al menos un número de caracteres, por ejemplo 10 caracteres? – alondono
Windows pre-commit hook para comprobar que el registro contiene algo.
@ECHO OFF
setlocal
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Get subversion arguments
set repos=%~1
set txn=%2
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Set some variables
set svnlookparam="%repos%" -t %txn%
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Make sure that the new svn:log message contains some text.
set bIsEmpty=true
for /f "tokens=* usebackq" %%g in (`svnlook log %svnlookparam%`) do (
set bIsEmpty=false
)
if '%bIsEmpty%'=='true' goto ERROR_EMPTY
echo Allowed. >&2
goto :END
:ERROR_EMPTY
echo Empty log messages are not allowed. >&2
goto ERROR_EXIT
:ERROR_EXIT
:: You may require to remove the /b below if your hook is called directly by subversion
exit /b 1
:END
endlocal
post-commit gancho para enviar notificaciones por correo electrónico de que algo ha cambiado en el repositorio a una lista de correos electrónicos. Necesita sendmail.exe en la misma carpeta que su archivo hook, junto con sendmail.ini.
También necesita un archivo post-commit.tos.txt junto a su post-commit.cmd para listar los destinatarios del correo. El archivo debe contener:
[email protected],[email protected],[email protected]
Aquí está el código de enlace:
@ECHO OFF
setlocal
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Get subversion arguments
set repos=%~1
set rev=%2
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Set some variables
set tos=%repos%\hooks\%~n0.tos.txt
set reposname=%~nx1
set svnlookparam="%repos%" --revision %rev%
if not exist "%tos%" goto :END
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Prepare sendmail email file
set author=
for /f "tokens=* usebackq" %%g in (`svnlook author %svnlookparam%`) do (
set author=%%g
)
for /f "tokens=* usebackq delims=" %%g in ("%tos%") do (
set EmailNotificationTo=%%g
)
set SendMailFile=%~n0_%reposname%_%rev%.sm
echo To: %EmailNotificationTo% >> "%SendMailFile%"
echo From: %reposname%[email protected] >> "%SendMailFile%"
echo Subject: [%reposname%] Revision %rev% - Subversion Commit Notification >> "%SendMailFile%"
echo --- log [%author%] --- >> "%SendMailFile%"
svnlook log %svnlookparam% >> "%SendMailFile%" 2>&1
echo --- changed --- >> "%SendMailFile%"
svnlook changed %svnlookparam% --copy-info >> "%SendMailFile%" 2>&1
echo .>> "%SendMailFile%"
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Send email
type "%SendMailFile%" | "%~dp0sendmail.exe" -t
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Clean-up
if exist "%SendMailFile%" del "%SendMailFile%"
:END
endlocal
me olvidó introducir un comentario al cometer. No tuve tiempo de averiguar por qué mi gancho de cambio de preprogramación no funcionaba. Así que el siguiente comando svnadmin funcionó para que ingresara un mensaje de confirmación: svnadmin setlog <filesystem path to my repository> --bypass-hooks -r 117 junk
, donde "junk" es el archivo que contiene el texto que quería que fuera el comentario. svn setlog help
tiene más información de uso ...
Para aquellos que están buscando un pre-revprop-change.bat para un snvsync operación:
https://gist.github.com/1679659
@ECHO OFF
set user=%3
if /I '%user%'=='syncuser' goto ERROR_REV
exit 0
:ERROR_REV echo "Only the syncuser user may change revision properties" >&2
exit 1
Sólo viene de aquí : http://chestofbooks.com/computers/revision-control/subversion-svn/Repository-Replication-Reposadmin-Maint-Replication.html y se ha adaptado para Windows.
- 1. ganchos precompilación del lado del cliente en subversión
- 2. mejor estrategia para escribir ganchos para la subversión en Windows
- 3. WCF tipos comunes no reutilizados
- 4. Programación aplicable y tipos comunes de ceceo
- 5. Optimización de WSImport para WSDL múltiples con tipos comunes
- 6. Encadenamiento de ganchos git
- 7. Ganchos de git multiplataforma
- 8. ganchos de ventana en C#
- 9. Ganchos commit de submódulo Git
- 10. Ganchos para ventanas: ¿cómo funcionan?
- 11. Añadiendo ganchos a TortoiseHg
- 12. Ganchos para git-svn
- 13. Proyecto de subversión de bifurcación
- 14. Lista de ganchos de Windows instalados
- 15. Ganchos de eventos de VMware en .NET
- 16. Comprensión de los ganchos de git básicos
- 17. ¿Hay una enciclopedia/lista de clases de tipos comunes en Haskell?
- 18. Técnicas comunes de SIMD
- 19. Uso de diffstat con subversión?
- 20. Buscar una actualización de subversión
- 21. problema de subversión - commit access
- 22. Teclados múltiples y ganchos de bajo nivel
- 23. PEP 302 Ejemplo: Nuevos ganchos de importación
- 24. factorygirl seco después de crear/construir ganchos
- 25. Los ganchos de Egit no se disparan
- 26. Git comprometer ganchos por rama
- 27. Cómo instalar ganchos en gitolite
- 28. Métodos de llamada comunes a los tipos en un impulso :: variante
- 29. Testing ganchos after_create con rspec
- 30. Teoría de tipos: tipos de tipos
No veo por qué esto todavía es un problema. Windows XP y posteriores, con un cambio de registro específico, pueden tener sensibilidad de mayúsculas y minúsculas. Son solo las utilidades del cliente, como TortoiseSVN, que no lo admiten. Debe ser una opción del instalador para establecer este registro cuando se instalen estas utilidades svn de cliente. – TamusJRoyce