2009-04-29 13 views
22

Znalazłem hak po odebraniu dla Gita po jakimś przeszukaniu go, za pomocą którego wysyłam wszystkie zatwierdzenia do zdalnego/udostępnionego repo.Git: hak poczty e-mail po otrzymaniu, w tym łatki diff?

Problem z tym post-receive hook polega na tym, że ma on tylko możliwość poinformowania, kto dokonał zatwierdzenia, komunikat dziennika, datę, plik (i), których dotyczy. Chcę również zobaczyć plik (e), którego dotyczy problem, wygenerował poprawki w wiadomości e-mail, aby zobaczyć, jakie zmiany zostały wprowadzone w kodzie. Subversion robi to dość ładnie.

Czy ktoś ma rozwiązanie może być zmienną env, która może zostać przekazana do haka po otrzymaniu, który to robi? A może nawet lepszy przykład, który już jest ugotowany?

Dzięki!

Odpowiedz

21

najnowszej wersji Git należy zainstalować post-receive-email skrypt. W nim jest napisane:

hooks.showrev

Polecenie powłoki wykorzystywane do formatowania każdą zmianę w wiadomości e-mail, z „% s” zastąpiony identyfikatorem popełnił. Domyślnie "git rev-list -1 --pretty% s", wyświetlając identyfikator zatwierdzenia, autora, datę i log wiadomość. Aby wyświetlić pełne poprawki oddzielone pustą linią, możesz ustawić na "git show -C% s; echo".

Po prostu ustaw hooks.showrev na "git show -C% s; echo "w repozytorium z hakiem wiadomości e-mail i wszystko gotowe.

+0

Bombe, Próbowałem ustawić następujące w wierszu poleceń bez żadnego szczęścia. # git config --global hooks.showrev "git show -C% s; echo" –

+0

Nieważne, nie możesz dodać go do --global, to musi być po prostu konfiguracja git, inaczej twoje rozwiązanie tak, dziękuję! –

+0

Nie miałem problemów z ustawieniem wszystkich niezbędnych wartości konfiguracyjnych w ustawieniach globalnych – Bombe

1

Nie uruchomiłem go od jakiegoś czasu, ale (uważam), że one I used to use jest online. Wziąłem to, co zwykłem wysyłać z gitem i przestawiłem je bardziej, tak jak lubiłem. Od dawna nie próbowałem czegoś podobnego.

Mam kilka zrzutów ekranu, co zrobił:

+0

Cześć Dustin. Czy masz jakieś modyfikacje, które sprawiały, że wydruki wyglądają podobnie do zrzutu ekranu powyżej? –

+0

Jestem prawie pewien, że to jest główny link w moim pierwszym zdaniu. Jeśli nie, to nie. :( – Dustin

1

Zobacz tę sekcję.

echo "" 
echo "Summary of changes:" 
git diff-tree --stat --summary --find-copies-harder $oldrev..$newrev 

Tutaj git jest pytany o różnicę, ale następnie jest również poproszony o jego podsumowanie. Usuń flagi --stat i --summary, a zobaczysz różnicę.

git diff-tree --find-copies-harder $oldrev..$newrev 

Oto kolejny sposób, który pokazuje wszystkie wersje w tym dyferencjału z $ oldrev do $ newrev

git --no-pager log --find-copies-harder $oldrev..$newrev 
+0

Witam Robin.Próbowałem obu powyższych modów i nie otrzymuję jeszcze wyjścia diff –

+0

W porządku, zapomniałem opcji "-p" w obu wersjach – robinr

2

miałem podobne problemy tutaj:

Git hook to send email notification on repo changes

Faktycznie istnieją różne wersje skryptu po odbierać wiadomości e-mail - jeden dostępne na git.kernel.org informuje, i szanuje hooks.showrev, ten, którego nie miałem.

Ale ta dyskusja jest fajna, dzięki, zdecydowanie na nią spojrzę! Inny skrypt powiązany powyżej ma również funkcję linku gitweb i inne rzeczy, jak to robią inni?