Friday, 22 April 2016

Transfering a commit message from Git to Target Process

It is possible to transfer a commit message from Git to Target Process using the REST Api of TP. This is done using hooks in Git. The problem is that the hook is written using bash shell scripts (or perl) and unlike Mercurial - Git does not sport an obvious choice of tool to develop such hooks. I am going to present below a hook I wrote in bash shell to transmit your commit message to TP. I choose to do this in the post-commit hook. First off, go to the source repository you are working with and into the .git subfolder. Then go into the hooks folder. Now add a new file called: post-commit Ok, so now we add our hook:

#!/bin/sh
#
# Overfører kommentar fra Git til Target Process
# Bruk - Formater kommentaren som: 
# TP TASKID: Min innsjekkingskommentar her
#
# Dette vil overføre så kommentarer til TP 
# Merk: 
# Erstatt verdiene i scriptet som heter TP_LOGON og TP_PASSWORD
# med ditt pålogging til TP. Vil du ikke inkludere passordet ditt til TP kan du 
# ta bort passordet som argument til curl kommandoen 
#
# Merk at du må installere Cygwin først og installere curl og curl-lib. Nano anbefales som editor
# Cygwin - https://www.cygwin.com 
 
 
NAME=$(git branch | grep '*' | sed 's/* //') 
DESCRIPTION=$(git config branch."$NAME".description)
 
regex='TP ([0-9]+):*'
 
melding=$(git log -1 --pretty=format:%s)
 
echo "Viser melding her: "
echo $melding
 
tpnum=0
 
if [[ $melding =~ $regex ]]
then
 tpnum="${BASH_REMATCH[1]}"
        echo "TP number: $tpnum"
        curl -H "Content-Type: application/json" -X POST --data '{"Description":"'"$melding"'", "General": { "Id": "'"$tpnum"'"}}' https://someacme.tpondemand.com/api/v1/Comments?resultFormat=json -u TP_LOGON:TP_PASSWORD
 else 
  echo "Pusher ikke melding ut til Target Process. Bruk: Skriv TP TASKID: melding"
fi

Note that the curl command needs to be a one liner. To use this hook, just do some changes in your code and commit! git commit -m "TP 123: This is a checkin comment for the task with task Id 123 and will be shown in TP via a Git hook!" If you are working on a Windows system, you can download Cygwin (64-bits tested) and the libs curl and curl-lib. I like the Nano editor very much. Happy coding in Git and sharing your check in comments on TP! Pretty nifty to share progress with others!

1 comment:

  1. #!/bin/sh
    #
    # Overfører kommentar fra Git til Target Process
    # Bruk - Formater kommentaren som:
    # TP TASKID: Min innsjekkingskommentar her
    #
    # Dette vil overføre så kommentarer til TP
    # Merk:
    # Erstatt verdiene i scriptet som heter TP_LOGON og TP_PASSWORD
    # med ditt pålogging til TP. Vil du ikke inkludere passordet ditt til TP kan du
    # ta bort passordet som argument til curl kommandoen
    #
    # Merk at du må installere Cygwin først og installere curl og curl-lib. Nano anbefales som editor
    # Cygwin - https://www.cygwin.com


    NAME=$(git branch | grep '*' | sed 's/* //')
    DESCRIPTION=$(git config branch."$NAME".description)

    regex='TP ([0-9]+):*'

    melding=$(git log -1 --pretty=format:%s)

    echo "Viser melding her: "
    echo $melding

    tpnum=0

    if [[ $melding =~ $regex ]]
    then
    tpnum="${BASH_REMATCH[1]}"
    echo "TP number: $tpnum"
    curl -H "Content-Type: application/json" -X POST --data '{"Description":"'"$melding"'", "General": { "Id": "'"$tpnum"'"}}' https://someacme.tpondemand.com/api/v1/Comments?resultFormat=json -u TP_LOGON:TP_PASSWORD
    else
    echo "Pusher ikke melding ut til Target Process. Bruk: Skriv TP TASKID: melding"
    fi

    ReplyDelete