2011-09-07 11 views
32

Uruchamiam program ostrzegający CruiseControl za każdym razem, gdy aktualizacja zostanie wysłana do naszego zdalnego repozytorium. Używam do tego celu haka po aktualizacji.Znajdź nazwę oddziału Git w haku po aktualizacji

Byłoby wspaniale, gdybym mógł się dowiedzieć, który oddział został zaangażowany, więc mógłbym użyć tego, aby poinformować CruiseControl, którą gałąź zbudować. Czy istnieje sposób dostępu do nazwy oddziału w hakowaniu po aktualizacji?

Odpowiedz

43

Pierwszym parametrem haka po aktualizacji jest pełne odwołanie do oddziału - na przykład widzę "refs/heads/master" dla polecenia push to "origin master". Więc przykład skrypt hak, który po prostu drukuje oddział modyfikowana jest:

:

#!/bin/sh 
branch=$(git rev-parse --symbolic --abbrev-ref $1) 
echo Update pushed to branch $branch 
exec git update-server-info 

Aby zilustrować, gdy wyżej umieszcza się zdalnych haków Plik/post-update jest drukowany przy wykonywaniu push następujące

% git push origin master 
Counting objects: 5, done 
Writing objects: 100% (3/3), 247 bytes, done. 
Total 3 (delta 0), reused 0 (delta 0) 
Unpacking objects: 100% (3/3), done. 
remote: Update pushed to branch master 
To /tmp/xx/a 
    e02d9cd..ab14a08 master -> master 

Nowa linia rozpoczynająca się od "remote:" została wyprowadzona przez nasz skrypt przechwytujący.

+0

Dzięki, Patthoyts. Korzystając z powyższego kodu, otrzymuję komunikat "remote: hooks/post-update: linia 8: branch: command not found". anch – user489998

+0

Podałem rozszerzoną próbkę. Na początku potrzebujesz linii #!/Bin/sh. Ponadto, jeśli ustawisz zmienną w skrypcie powłoki, użyj $, aby uzyskać dostęp do wartości – patthoyts

+0

Wayhey! Zrobiłem to. Bardzo dziękuję patthoyts. – user489998

Powiązane problemy