2011-11-24 16 views
7

Estamos utilizando un sistema de ticketing que quiero actualizar automáticamente a medida que los desarrolladores envían sus cambios al servidor. Para actualizarlo, solo necesito proporcionar una URL específica con el mensaje de confirmación como una variable GET. La página a la que se llama registrará este cambio. Sé que mi camino es con hooks, pero no estoy familiarizado con Bash ni con Perl, por lo que es bastante desafiante.git enganche post-recepción que atrapa los mensajes y las publicaciones de confirmación en la URL

que quiero lograr esto:

  • desarrollador empuja al servidor
  • post-receive carreras de gancho y controles que diferentes cometa, está nueva (porque puede haber varios en un toque)
  • se realiza un bucle a través ellos, y para cada confirmación, se abrirá una URL con el mensaje de confirmación (curl http://server.com/logthis.asp?msg=Here_goes_the_commit_message, algo así)

Eso es todo. Aunque he comprobado somesamples relacionado con este tipo de idea, ninguno hace exactamente esto. ¿Como se puede hacer esto?

+0

Why the downvote ?? –

Respuesta

9

El PITA principal es para aislar la lista correcta de nuevas revisiones, que pedí prestada de/usr/share/doc/git/contrib/hooks/post-receive-email (show_new_revisions).

while read oval nval ref ; do 
    if expr "$ref" : "^refs/heads/"; then 
     if expr "$oval" : '0*$' >/dev/null 
     then 
      revspec=$nval 
     else 
      revspec=$oval..$nval 
     fi 
     other_branches=$(git for-each-ref --format='%(refname)' refs/heads/ | 
      grep -F -v $ref) 

     # You may want to collect the revisions to sort out 
     # duplicates before the transmission to the bugtracker, 
     # but not sorting is easier ;-) 
     for revision in `git rev-parse --not $other_branches | git rev-list --stdin $revspec`; do 
        # I don't know if you need to url-escape the content 
        # Also you may want to transmit the data in a POST request, 
      wget "http://server.com/logthis.asp?msg=$(git log $revision~1..$revision)" 
     done 
    fi 
done 
+0

cuidado. Si ambos crean una revisión y la fusionan en otra rama con el mismo impulso, el código anterior la omitirá. –

Cuestiones relacionadas