¿Alguien sabe cómo evitar que se compromete a una Subversión del repositorio de código cuando no se envía comentario introducido?

  • Tenga en cuenta que los ganchos sólo puede evitar que accidentalmente se comete sin comentarios. A menos que usted educar a sus usuarios, se acaba de comprometer con algo parecido a «corregir el error», que no tiene ningún mérito a través de un mensaje vacío.
  • Estoy de acuerdo con Thilo. Si su intención es la de evitar errores a la hora de llevar a cabo sin comentarios, las soluciones que se ofrecen aquí son de ir a trabajar. Si usted desea esto para obligar a los usuarios a proporcionar a los comentarios significativos obligándoles a comentar, que va a escribir «corregir errores» y «nueva característica» en todos los envíos. Este es un problema de la cultura.
  • De acuerdo, esto es lo más importante.
  • Sí, usted no puede obligar a los usuarios a escribir los comentarios significativos o incluso comprensible. Pero lo que obligó a escribir algo en lugar de solo brainlessly envío comete fuera de gran ayuda en mi experiencia. Y para aquellos que acaban de escribir «fijo» o tal, de una charla entre la gente puede ir un largo camino. Y si esto no ayuda, considere la posibilidad de buscar alternativas en el wetware.
InformationsquelleAutor | 2009-12-18

6 Comentarios

  1. 59

    Puede utilizar un gancho (ponerlo en <repository>/hooks y el nombre de pre-commit.bat (Windows)):

    @echo off
    ::
    :: Stops commits that have empty log messages.
    ::
    
    setlocal
    
    rem Subversion sends through the path to the repository and transaction id
    set REPOS=%1
    set TXN=%2
    
    rem check for an empty log message
    svnlook log %REPOS% -t %TXN% | findstr . > nul
    if %errorlevel% gtr 0 (goto err) else exit 0
    
    :err
    echo. 1>&2
    echo Your commit has been blocked because you didn't give any 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
    

    src: http://www.anujgakhar.com/2008/02/14/how-to-force-comments-on-svn-commit/

    • +1, aunque por supuesto esto no puede obligar a los usuarios a utilizar los comentarios significativos. svn commit -m «foo» foo.h todavía funciona.
    • ¿Para qué es el ` > nul` parte? ¿Cuál es el propósito de la misma?
    • mensaje de redirección, véase también: support.microsoft.com/kb/110930
    • Gracias!
  2. 20

    Aquí es un gancho pre-confirmación con @miku detallada del mensaje de error para Linux:

    #!/bin/sh
    
    REPOS="$1"
    TXN="$2"
    
    SVNLOOK=/usr/bin/svnlook
    $SVNLOOK log -t "$TXN" "$REPOS" | \
       grep "[a-zA-Z0-9]" > /dev/null
    
    GREP_STATUS=$?
    if [ $GREP_STATUS -ne 0 ]
    then
        echo "Your commit has been blocked because you didn't give any 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
    fi
    exit 0
    
    • Consejos: cambiar el nombre de pre-commit.tmpl pre-commit
  3. 18

    De hecho, cuando se crea un repositorio de Subversion, su hooks subdirectorio ya contiene gancho de muestras. Retirar el llamado pre-commit.tmpl para más detalles sobre el gancho de parámetros. También contiene un ejemplo de un gancho que estás buscando:

    #!/bin/sh
    REPOS="$1"
    TXN="$2"
    
    # Make sure that the log message contains some text.
    SVNLOOK=/usr/local/bin/svnlook
    $SVNLOOK log -t "$TXN" "$REPOS" | \
       grep "[a-zA-Z0-9]" > /dev/null || exit 1
    

    Usted puede escribir su gancho en cualquier secuencia de comandos o el idioma, lo que es ejecutable en su Subversión de la máquina.

    • Esto me funciona en Ubuntu con UberSVN. Aunque tengo que señalar SVNLOOK a /opt/ubersvn/bin/svnlook
    • También tengo que sudo chmod 777 pre-commit para obtener funciona; de lo contrario, todos los envíos son rechazadas.
    • 777 no debe usarse a la ligera, sólo tenía que usar 700 o 750 en el archivo para que funcione, si el propietario está correctamente configurado.
    • Gracias @Shadok. Aunque no tengo ni idea de the owner is correct. Sería agradable si usted puede señalar más
    • Usted debe tomar un día o dos para leer documentación general sobre linux porque parece que la falta de algunas habilidades básicas (sin ofender), echa un vistazo aquí para una lección rápida sobre los archivos onwership y permisos: code.google.com/edu/tools101/linux/ownership_permissions.html
  4. 6

    Crear un gancho pre-confirmación. Aquí algunas instrucciones sobre cómo hacerlo usted mismo, o aquí es un script gancho de ejemplo que rechazará cualquier cosa con un mensaje de confirmación con menos de 10 caracteres.

    • Genial!!! Funciona bien, sólo tuve que cambiar la ubicación de python y svnlook.
    • El enlace a la muestra script gancho que rechaza cualquier cosa menor de 10 caracteres está roto.
    • esta respuesta es de todo un poco «enlace solo». No podía poner el contenido de el gancho ejemplo en la respuesta?
  5. 6

    Linux script para más de 15 caracteres–

    #!/bin/bash
    REPOS="$1"
    TXN="$2"
    # Make sure that the log message contains some text.
    SVNLOOK=/usr/bin/svnlook
    # Comments should have more than 5 characters
    LOGMSG=$($SVNLOOK log -t "$TXN" "$REPOS" | grep [a-zA-Z0-9] | wc -c)
    if [ "$LOGMSG" -lt 15 ];
    then
    echo -e "Please provide a meaningful comment when committing changes." 1>&2
    exit 1
    fi
    

    Fuente-http://java.dzone.com/articles/useful-subversion-pre-commit

  6. 6

    Si usted está utilizando TortoiseSVN sólo entonces usted puede agregar TortoiseSVN de la propiedad del directorio raíz:
    nombre de la propiedad: tsvn:logminsize
    valor: 1
    Esto deshabilita el botón ACEPTAR en TortoiseSVN cometer ventana, a continuación, el Mensaje está vacío.
    Tenga en cuenta que esta propiedad es TortoiseSVN específico podría no funcionar con otro cliente de SVN.

Dejar respuesta

Please enter your comment!
Please enter your name here