Pregunta

¿Cuáles son algunos de los comunes y/o útiles de pre-confirmación ganchos para SVN?

¿Fue útil?

Solución

Tenemos un puesto de cometer gancho que haya enviado el mensaje a una cuenta de twitter. Utiliza twitsvn (exención de responsabilidad: No soy confirmador en ese proyecto).

tonta? Tal vez ... pero resultó ser una buena manera para que nos comuniquemos las idas y venidas de nuestro repositorio a algunos de nuestros miembros del equipo de control de versiones-desafiado. Una vez SVN empezó a hablar con ellos a través de su cliente de Twitter, no se sentía tan parecido a un cuadro negro.

Otros consejos

que un usuario ha entrado efectivamente en un comentario en el mensaje de confirmación, y que contiene una serie tema en particular para realizar un seguimiento.

Comprobación de rutas absolutas en varios archivos de texto (es decir, VRML, XML, etc.). La mayoría del código facturado nunca debe tener rutas absolutas, sin embargo, algunas personas y herramientas insistir en la producción de material modificable.

hago un recuento de palabras en enviar mensajes. Tienen que ser 5 palabras o más. Esto ha llevado a algunos insultos de comedia en mi contra ...

  • Comprobar pestañas y rechazar la registrarse.
  • Comprobar si la línea inconsistente terminaciones y rechazar el registro de entrada.
  • Compruebe si hay aparición de "CR: [Nombre de usuario]" y rechazar el registro de entrada si no hay una revisión de código.

Es posible que desee echar un vistazo a: http://svn.apache.org /repos/asf/subversion/branches/1.6.x/www/tools_contrib.html#hook_scripts (Esta página podría estar desactualizada, obviamente, no tendrá soporte para Subversion 1.7)

o directamente en: https://svn.apache.org/repos/asf/subversion/trunk/ contrib /

Me gusta usar ganchos svn a:

  • hacer cumplir las estrictas puntos de estilo de código
  • comprobación de errores de sintaxis obvio
  • Asegúrese palabras clave especial Trac como "fija" o "Direcciones" se precede en realidad el número de emisión apropiada

puedo comprobar el tipo de archivo y asegúrese de que ciertos tipos prohibidos no están comprometidos por accidente (por ejemplo, .obj, .pdb). Bueno, no desde la primera vez que alguien comprueba en 2 GB de archivos temporales generados por el compilador: (

para Windows:


@echo off

svnlook log -t "%2" "%1" | c:\tools\grep -c "[a-zA-z0-9]" > nul
if %ERRORLEVEL% NEQ 1 goto DISALLOWED

echo Please enter a check-in comment 1>&2
exit 1


:DISALLOWED
svnlook changed -t %2 %1 > c:\temp\pre-commit.txt

findstr /G:"%1\hooks\ignore-matches.txt"  c:\temp\pre-commit.txt > c:\temp\precommit-bad.txt
if %ERRORLEVEL% NEQ 0 exit /b 0

echo disallowed file extension >> c:\temp\precommit-bad.txt
type c:\temp\precommit-bad.txt 1>&2
exit 1

Yo uso un gancho post-commit para reescribir la propiedad autor a un nombre descriptivo de nuestro árbol LDAP. (Autenticación es empleado con id)

Una gran cometer gancho que tenemos en el nuestro archivo es comprobar todos los proyectos de Visual Studio .vcproj (o .csproj) para asegurarse de que los directorios de salida no se cambiaron para nada local (comúnmente utilizado para la depuración).

Estos problemas se compile correctamente, pero aún romper la acumulación debido a que faltan archivos ejecutables.

En la actualidad, la empresa que trabajo, se comprueba esto:

  • Si los archivos binarios tienen el atributo de bloqueo necesidades establecido;
  • Si los archivos de Java tienen el aviso de derechos de autor estándar y si se incluye el año en curso;
  • Si el código tiene el formato correcto (usamos cacharro para el formato de código) - esto puede sonar tonto, pero lo que realmente hace que las comparaciones de texto entre diferentes versiones más fácil;
  • Si el código tiene un mensaje de confirmación;
  • Si la estructura de directorios se ajusta a lo que se define (todos los proyectos deben estar bajo una carpeta SVN definida, y cada proyecto debe tener un tag, rama del tronco y la carpeta);

supongo que eso es todo.

Me gusta la idea de comprobar si se asocia con un boleto de la confirmación; que en realidad tiene mucho sentido para mí.

Algunos prefieren ejecutar una herramienta de pelusa similar para un determinado idioma para encontrar problemas comunes en el código y / o hacer cumplir estilo de codificación. Sin embargo, en un equipo pequeño y hábil prefiero permitir que cada commit que pasar y hacer frente a posibles problemas durante la integración continua y / o revisión de código. Gracias a este cometa, está más rápido que fomenta compromete más frecuentes, lo que lleva a una integración más fácil.

check- mime-type.pl gancho pre-commit para comprobar que el tipo MIME y Fin de opciones de línea se establecen en los archivos comprometidos. Yo uso la subversión para publicar archivos para ser visibles en un sitio web usando DAV, y todos los archivos sin el conjunto Tipo MIME que nos sirvieran como archivos de texto (por ejemplo, código fuente HTML se muestra en un navegador en lugar del marcado prestado).

Insertar una nota en la Mantis bugtracker con el changelist detalles basándose en el mensaje de confirmación que tener " edición #' o como medio de Expresiones regulares.

que tiene un mensaje de confirmación, y lo es! = De "corrección de errores". Maldita sea, me odio a esos mensajes inútiles!

Utilizamos un pre-entrega y post-entrega combo gancho para actualizar automáticamente Bugzilla con la entrada asociada desde el svn commit.

Utilizamos un segundo (pre-commit) gancho para asegurar que el SVN apropiado: eol-style y SVN:. Palabras clave propiedades se establecen en un archivo antes de que se añade a la repostitory

Tenemos un tercio (post-commit) gancho para dar inicio a una acumulación y enviar por correo los resultados si la acumulación se ha roto, y para informar a todo el mundo cuando la acumulación se ha fijado de nuevo.

Tenemos una cuarta parte (post-commit) gancho para poner en marcha la replicación SVN, para garantizar que la replicación fuera del sitio es lo más actualizada posible.

Por desgracia, no puedo publicar la fuente de estos, pero, a excepción de la integración de Bugzilla, son bastante fáciles de implementar, y Hudson es probablemente una mejor opción para la integración continua.

Para la integración Bugzilla, sugeriría mirar scmbug .

Yo uso el siguiente script gancho para hacer los finales de línea seguras de código fuente y los permisos de scripts de shell son correctos (es frustrante cuando alguien cheques en en las ventanas cuando todo parece bien y rompe la acumulación de Unix).

#!/bin/bash

REPOS="$1"
TXN="$2"

# Exit on all errors.
set -e
SVNLOOK=svnlook
echo "`$SVNLOOK changed -t "$TXN" "$REPOS"`" | while read REPOS_PATH
do
  if [[ $REPOS_PATH =~ A[[:blank:]]{3}(.*)\.(sh|c|h|cpp) ]]
  then
    if [ ${#BASH_REMATCH[*]} -ge 2 ]
        then
    FILENAME=${BASH_REMATCH[1]}.${BASH_REMATCH[2]};

    # Make sure shell scripts are executable
    if [[ sh == ${BASH_REMATCH[2]} ]]
    then
        EX_VALUE="true"
            if [ -z "`$SVNLOOK propget -t \"$TXN\" \"$REPOS\" svn:executable \"$FILENAME\" 2> /dev/null`" ]
            then
            ERROR=1;
                echo "svn ps svn:executable $EX_VALUE \"$FILENAME\"" >&2
        fi
        EOL_STYLE="LF"
    else
        EOL_STYLE="native"
    fi

    # Make sure every file has the right svn:eol-style property set
        if [ $EOL_STYLE != "`$SVNLOOK propget -t \"$TXN\" \"$REPOS\" svn:eol-style \"$FILENAME\" 2> /dev/null`" ]
        then
        ERROR=1;
            echo "svn ps svn:eol-style $EOL_STYLE \"$FILENAME\"" >&2
    fi
    fi
  fi
  test -z $ERROR || (echo "Please execute above commands to correct svn property settings." >& 2; exit 1)
done

¿Qué hay de un gancho para compilar el proyecto? p.ej. Ejecutar marcar. Esto garantiza ninguna comprobación de uno de código que no se compila! :)

Solución de falta de archivos externos en SVN 1,5 usando PostUpdate y precommit

Me gustaría disfrutar de un gancho que comprueba [Crítico: xyz] nota en el mensaje de confirmación, y rechaza la confirmación

.

Estoy pensando en escribir uno para comprobar de DOCTYPE en archivos aspx / html, sólo para asegurarse de que todos estén utilizando la correcta.

Además, puede tener un pre (o posterior) comprometerse gancho de empujar una notificación a su servidor CI como se describe en el Blog Hudson

verifico para el caso de colisiones (ventanas estúpidos) y también require-mergeinfo.pl para garantizar que el cliente es al menos 1.5 - de esa manera SVN: mergeinfo se configurará siempre

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top