2008-08-08 17 views

Respuesta

0

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.

3

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.

1

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:

  1. 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.

  2. 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.

0

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.

0

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
3

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
4

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.

0

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.

0

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.

7

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.

+0

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

1

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.

60

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 
+0

Gracias esto fue muy útil. – ziggy

+1

De hecho, reagrupar todos mis anzuelos en una cuenta de github para que pueda mejorarse con el tiempo https://github.com/philibertperusse/subversion-hooks –

+0

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

0

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 
1

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 
0

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 ...