¿Cómo puedo automatizar la integración de Pivotal Tracker y Github?
githooks pivotaltracker (7)
Aquí hay una joya que hace exactamente lo que quieres:
http://github.com/bogdan/git-storyid
Permite seleccionar una historia de un menú bien formado:
[1] Removing Billing Page
[2] Welcome Email
[3] Tag campaign insertion points and campaigns with an identifier
Indexes(csv): 3
[campaign-tags 3020407] [#44116647] Initial implementation of campaign tags
1 file changed, 101 insertion(+), 2 deletions(-)
Pivotal Tracker y Github tienen una gran integración: una vez que se configura, cada confirmación que tiene como prefijo el Pivotal Tracker ID aparecerá bajo el Boleto Pivotal correspondiente automáticamente, por ejemplo:
git commit -am ''[#1234567] my new changes''
git push origin
agregará el comentario ''Mis nuevos cambios'' automáticamente al Boleto Pivotal 1234567 entre con el enlace de compromiso de github.
Sin embargo, es fácil olvidarse de agregar la identificación del boleto cada vez. ¿Cómo podría ser simplificado / automatizado?
Aquí hay una versión de shell simple basada en la solución de Tamas. Toma la identificación del final del nombre de la rama.
"my-feature-branch-12345678" => "Mi mensaje de confirmación [# 12345678]".
Vaya a .git / hooks / prepare-commit-msg y hágalo ejecutable:
#!/bin/bash
if story_id=`git branch | grep -oP ''^/*.*/-/K[0-9]+$''`
then
echo "[#$story_id]" >> "$1"
fi
Estoy utilizando un bookmarklet, que también establece el mensaje de confirmación del título de la historia.
[#69609212] Add new Todo
Puedes conseguirlo desde here
Instale la gema ''git-pivotal-tracker-integration'', https://github.com/nebhale/git-pivotal-tracker-integration
Agrega comandos a git como inicio y finalización a Git para prefijar automáticamente las ramas y se compromete con el ID de la historia del rastreador y también publica sus mensajes de confirmación en el rastreador. Cuando llames "inicio de git", se extraerá el master para asegurarte de que estás actualizado, crea una rama para ti y comienza la historia en el rastreador para ti. Haga el trabajo, luego llame a ''git finish'' y fusionará su rama nuevamente para dominar y actualizar el rastreador.
La solución es usar Git-Hooks y ramas de características. (Se recomienda el flujo de Github).
Debe instalar este Git-Hook (copie un archivo a su repositorio local):
https://github.com/ktamas77/git_hooks
Antes de comenzar a trabajar en un Pivotal Ticket en particular, creará una rama con el prefijo Pivotal Tracker ID, por ejemplo:
git checkout 1234567_build_new_form
Luego agrega todos tus cambios como lo harías normalmente:
git commit -am ''form added''
git commit -am ''styles added''
git push origin
verás, el script de git hook extraerá automáticamente el ID de Pivotal Tracker del nombre de la rama de la característica y lo agregará al principio de cada comentario. Todavía puede anularlo manualmente (con otra ID) si lo desea.
De esta manera, no tiene que preocuparse por agregar el ID de Pivotal manualmente para cada confirmación individual. También funciona con GUIS (como GIT Tower) ya que estas GUI están utilizando las bibliotecas / ejecutables GIT estándar.
Mis equipos están utilizando git_tracker
. Cada desarrollador debe ejecutar
$ git tracker init
Una vez por cada proyecto en Pivotal Tracker. Luego, deben asignar un nombre a cada nueva rama con una convención especial, con el sufijo de la identificación de la historia de Pivotal Tracker. Por ejemplo:
$ git checkout -b the-great-feathure-123456789
donde 123456789 sería la identificación de la historia de Pivotal Tracker.
Y aquí tienes, automáticamente harás que cada uno se refiera a la historia. Punto de bonificación, si usa GitHub para realizar solicitudes de extracción, puede pedir a los revisores que fusionen la historia que agreguen al compromiso de fusión:
[Fixes #123456789] ...
De esta manera, nunca tiene que hacer clic en el botón Finish
, GitHub lo hará por usted.
Un comentario tardío, pero tal vez aún sea útil. Quería la misma solución provista por @Sjoerd, pero soy un usuario de mac;)
El código resultante se ve así;
story_id=`git symbolic-ref --short -q HEAD | grep -o "^[[:digit:]]*"`
if [ ! -z "$story_id" -a "$story_id" != " " ]
then
echo "[#$story_id] $(cat $1)" > "$1"
fi
Tenga en cuenta que anteponemos el ID de problema al nombre de la rama, pero es bastante básico modificar la expresión regular para que coincida con el final de la cadena, no con el principio. También agregamos el ID de problema al inicio del comentario, ya que esto proporciona una visión general más clara en el registro de git. Si la secuencia de comandos anterior es ues, cada mensaje de confirmación se adjuntará con [#<issue ID>]
, excepto cuando el nombre de la rama no comience con una ID de problema real.
Debe tenerse en cuenta que probablemente sea mejor si este código se agrega antes que cualquier otro código en el prepare-commit-msg
, ya que esto resultará en todos los compromisos a ser anexados, incluso las fusiones automáticas y similares.
¡Espero que esto ayude!