sharpek.net

moje trzy grosze

GIT hooks dla Stash (Atlassian) – by już nigdy nie przesłać PDB w pull requests

W pracy korzystamy z dość popularnego narzędzia firmy Atlassian – Stash. Potrzebowaliśmy zablokować możliwość pushowania zmian do wszystkich repozytoriów kodu zawierającego pdb.

Niestety w Google na próźno szukać hooków typu pre-receive (można znaleźć tylko pre-commit, które działają zupełnie inaczej) które odpowiadają za przyjmowanie zmian z zewnątrz. Dlatego w wolnej chwili popełniłem takie małe „coś”:

#!/bin/bash
read oldrev newrev refname
git --work-tree=. diff $newrev | grep $FORBIDDEN_PATTERN > /dev/null
result=$?
if [ "$result" -eq "0" ]
then
    echo "W commitujesz PDB, to nie jest dobry pomysl!"
exit 1;
fi

Tworzymy plik np.: 10_ipdb, zgodnie z dokumentacją GITa ustawiamy chmod +x dla naszego HOOKa (do pliku wklejamy zawartość jak powyżej).
Niestety w STASHu nie ma możliwości tworzenia globalny HOOKów, ale to można w prosty sposób obejść dodając do wszystkich repozytoriów symlinka do 10_ipdb.

find . -type d -name "pre-receive.d" -printf "ln -s /SCIEZKA_DO_PLIKU/10_ipdb %P/ \n" |sh

To polecenie wykonujemy w katalogu z repozytoriami STASH-a. Tworzymy symlinka także należy pamiętać by nie skasować pliku z naszym hookiem

Ekstra

Jeśli chcemy ubarwić sobie pracę, możemy po każdym pushu serwować jakiś dowcip, dodająć poniższy fragment do naszego hooka:

curl  -s --connect-timeout 0 http://api.icndb.com/jokes/random\?firstName\=John\&amp\;lastName\=Doe | grep  -Po '"joke":.*?[^\\]",'

Pozdrawiam :)

 

Comments

No comments so far.

Leave a Reply

 
(will not be published)
 
 
 
 

Preview: