2012-07-06 18 views
20

W naszej firmie przeprowadzamy się z svn do git. Do śledzenia problemów używamy JIRA z Atlassian.Numer wydania Jira w komunikacie zatwierdzenia git

Teraz chcemy wymusić, że każda wiadomość zatwierdzenia zawiera numer wydania (tak jak zrobiliśmy to z svn).

Znaleźliśmy hak commit-msg, którego używamy do odrzucania commitów, jeśli nie zawiera numeru wydania.

JIRA używa Fisheye do skanowania repozytorium git. Jeśli komunikat zatwierdzenia zawiera numer wydania, zmiany są wyświetlane pod tym numerem.

Problem polega na tym, że hak nie jest kopiowany podczas klonowania repozytorium git. Numery wydań w komunikatach o zatwierdzeniu nie są egzekwowane. Oznacza to, że gdy nowe zatwierdzenie zostanie przekazane w górę strumienia, Jira może nie wyświetlić zmian w ramach problemu.

Pytanie brzmi; czy używamy Git w jakiś sposób w niewłaściwy sposób i czy istnieje jakiś sposób, aby naprawdę wymusić numer wydania w komunikacie zatwierdzenia? A może ktoś ma po prostu skrypt/hook (inny niż hook commit-msg), który to osiąga?

+0

Nadal nie ma dobrej odpowiedzi. Czy ktoś ma dobry hak po stronie serwera? Haczyk musi być wykonany na początku, tj. W miejscu, do którego docieramy. – meijuh

Odpowiedz

0

Możesz mieć haki po stronie serwera, pre-receive-hook lub coś podobnego, jednak nie jest to oczywiste, jeśli jesteś przyzwyczajony do github.

W przeciwnym razie mógłbym rozważyć opcję kompilacji "instaluj haki" (jako zadanie rake, zadanie lub cokolwiek innego), ale to sprawiłoby, że poczułbym się trochę "brudny", ponieważ teraz moja kompilacja jest związana z system kontroli wersji ...

+0

Zasadniczo chcę, aby serwer, który ma źródło, odrzucił wypychanie z lokalnego repozytorium, jeśli komunikat zatwierdzenia nie ma numeru wydania. – meijuh

+0

Znalazłem https://github.com/joyjit/git-jira-hook/blob/master/git-jira-hook. Ale chce połączyć się z serwerem JIRA, który nie jest naprawdę potrzebny do tego, co chcę. – meijuh

13

Użyłem git-jira-hook i zmodyfikowałem go zgodnie z moimi potrzebami, co również powinno zadziałać. Dla swoich potrzeb po prostu usuń części, w których loguje się do Jiry, aby sprawdzić, czy numer wydania jira wyrejestrowany z komunikatu zatwierdzenia jest prawidłowy. Jeśli nie lubisz Pythona (git-jira-hook jest napisany w python) i wolisz bash, powinieneś być w stanie dostosować przykładowe skrypty w repozytorium .git/hooks do twoich potrzeb.

Jeśli chodzi o implementację czegoś, co będzie działać dla wszystkich, chcesz użyć git-jira-hook jako haka "aktualizacji" w repozytorium. Spowoduje to zablokowanie paczek zawierających komunikaty zatwierdzenia, które nie mają odpowiednich odniesień do problemów z jirą. Ponieważ wygodniej jest uzyskać opinię na temat brakujących odniesień do problemów w czasie zatwierdzania (a nie w czasie wypłaty), musisz poprosić programistów o zainstalowanie git-jira-hook jako haka commit-msg. Później wyjaśnię, jak można to zrobić globalnie.

Oto jak mam rozwiązać ten problem:

  1. prywatne repo popełnić-msg haczyk: I zmodyfikowane git-Jira-hak do sprawdzenia referencji emisji JIRA w notacji że używamy. Następnie wysłałem wiadomość e-mail z instrukcją do wszystkich, wyjaśniając, jak zainstalować hak na całym świecie, jak wyjaśniono w this SO question. Jeśli zainstalujesz hak na całym świecie, będzie on używany we wszystkich przyszłych klonach i może być łatwo zastosowany do sklonowanych repo za pomocą git init.

  2. Haczyk aktualizacji repo w górę strumienia: Użyłem już zmodyfikowanego skryptu git-jira-hook i zainstalowałem go w każdym z naszych repozytoriów. Nie mogłem uzyskać interaktywnych bitów uwierzytelniających pracujących nad repo (relink), więc zamiast tego utworzyłem użytkownika Jira z ograniczonymi uprawnieniami i zakodowałem ich uwierzytelnianie w skrypcie.

+1

Istnieje również wiele rozwidleń dla git-jira-hook, które mają kilka przydatnych funkcji. Jeśli wydaje ci się, że git-jira-hook Ci nie wystarcza, sprawdziłbym widły, aby sprawdzić, czy są jakieś funkcje, których potrzebujesz. – Freerobots

0

Jest add-on na to: Commit Policy Plugin for JIRA!

Sprawdza nie tylko, czy klucz wydania JIRA jest "formalnie" zawarty w komunikacie, ale także sprawdza, czy odpowiadające mu pytania pasują do zapytania JQL. Korzystając z tego, masz wiele możliwości, aby umożliwić sprawdzanie tylko w odniesieniu do pewnych rodzajów spraw, problemów w określonych statusach, problemów w bieżącym sprintu Scrum, problemów kierowanych na następną wersję i tak dalej.

enter image description here

Jako bonus, współpracuje zarówno z oryginalną (Subversion) oraz systemu kontroli wersji docelowej (Git), co czyni pracę kontrolowane nawet w okresie przejściowym.

Możesz zainstalować skrypt przechwytujący do błogosławionego repo i do dowolnych rozwidleń. Niestety skrypty przechwytujące nie są klonowane podczas klonowania repo z Git, ale obecnie badamy obejścia tego problemu.

Pełna dokumentacja: http://www.midori-global.com/products/jira-commit-policy-plugin/documentation/

Wsparcie to jest komercyjny i wspierane dodatek dla JIRA i jestem deweloperem pracy nad nią.

0

Jeśli korzystasz z domyślnych haków w folderze .git, zmiany, które wprowadzisz, nie zostaną zaindeksowane, co oznacza, że ​​nie można ich wyewidencjonować ani sklonować.

możesz przenieść hak commit commit w innym folderze zwanym "hooks" i zatwierdz go tak, aby nadpisał domyślne hooki z .git.

Wyświetlamy komunikat jako błąd, jeśli zatwierdzenie nie zawiera numeru wydania, aby użytkownik mógł nadal działać, jeśli nie musi mieć numeru śledzenia problemu (działa w przypadku poprawki/poprawki)