2015. október 9., péntek

GIT Update Hook - Commit Message Restriction

A GIT Hook-ok lehetőséget adnak arra, hogy egy saját szkriptet futtassunk le, bizonyos GIT-es események bekövetkezésekor. A GIT művelet típusától függően választhatunk a kliens oldali ill. szerver oldali hook-ok közül.

Amit el szerettem volna elérni az az volt, hogy csak abban az esetben lehessen feltölteni a módosításokat a GIT szerverre, hogyha a kommit üzenetek megfelelnek egy általunk definiált formátumnak, esetünkben a "RED-123 kommit-üzenet" mintának, ahol is a RED-123 annak a redmine issue-nak az azonosítója amin a fejlesztő éppen dolgozik.

Itt megjegyezném, hogy az Eclipse-hez léteznek mylyn issue tracking connector-ok (JIRA, Mantis, Bugzilla, Trac) amelyek lehetővé teszik, hogy a fejlesztő magához vegyen egy taszkot és a kommittoláskor az issue azonosítójával automatikusan kitöltik a kommit üzenetet, így azt már nem kell kézzel beírogatni. Ezen konnektorok használata mindenféleképpen javasolt, amennyiben létezik ilyen plugin az általunk használt fejlesztő eszközhöz ill. ticketing rendszerhez.


A GIT (esetemben RhodeCode) szerveren, a repository hooks könyvtárában létrehoztam egy update futtatható fájlt az alábbi tartalommal, ami meghívódik minden egyes git push művelet esetén és csak a megfelelő kommit üzenet formátum esetén engedélyezi a kód feltöltését.
#!/bin/sh

refname="$1"
oldrev="$2"
newrev="$3"

for rev in `git rev-list $oldrev..$newrev`
do
    comment=`git log --format=%B -n 1 $rev`
    echo "Your commit message is: "$comment
    str=$(grep ^RED-[0-9]\\+[[:space:]][a-zA-Z0-9]* <<< $comment)
    if [ "$str" == "" ];then
       echo "[POLICY] Your message is not formatted 
             correctly! Use the 'RED-123 message' pattern, please"
       exit 1
    fi
done
echo "Thank you for your valid GIT commit message format!"
exit 0

Amennyiben javítani szeretnénk egy véletlenül elrontott kommit message-en, az Eclipse git staging view/ commit message/ Amend/ edit previous commit funkcióval tehetjük meg. 

Nincsenek megjegyzések:

Megjegyzés küldése

Megjegyzés: Megjegyzéseket csak a blog tagjai írhatnak a blogba.