Jaki jest właściwy sposób sprawdzania danych zatwierdzania w Git?

13

Moim celem jest sprawdzenie danych zatwierdzenia, które nie spełniają określonych wymagań, a następnie odrzucenie tworzonego zatwierdzenia lub przekazanie go do zdalnego repozytorium.

Problemem wykonania przechwytywania przed zatwierdzeniem jest to, że trudno jest go wdrożyć dla wielu osób, które muszą ręcznie zaktualizować swój plik przechwytywania przed zatwierdzeniem. Ponadto Git nie pozwala mieć podmodułów w folderze .git, co byłoby bardzo łatwe do wdrożenia, ale niestety.

Inną opcją, którą widzę, jest sprawdzanie. Uważam, że hak aktualizacji po stronie zdalnej sprawdzi, czy każde zatwierdzenie jest wypychane przez programistę i odrzuca push, jeśli którykolwiek z zatwierdzeń nie przejdzie testów.

Czy ktoś ma wgląd w ten problem? A jeśli tak, czy mógłbyś podać lub skierować mnie w stronę przykładowego skryptu aktualizacji? Jestem trochę zdezorientowany, jak to działa.

dalanmiller
źródło
4
To świetne pierwsze pytanie.
Daenyth,

Odpowiedzi:

7

musisz najpierw dowiedzieć się, czy nie chcesz, aby niekwalifikowany kod został zatwierdzony, czy też został zepchnięty / opublikowany z powrotem na górę.

moim zdaniem ten drugi jest bardziej wykonalny.

z DVCS jak git. tak naprawdę nie chcesz kontrolować, w jaki sposób każdy programista używa swojego lokalnego repozytorium. i tak naprawdę nie możesz mieć nad tym kontroli.

hak przed zatwierdzeniem działa również jako podstawowa walidacja i odkażanie, jeśli wszyscy zaangażowani przyjmą go dobrowolnie. egzekwujemy to luźno w naszej firmie. jednak zawsze można go pominąć git commit --no-verify.

haczyk po stronie serwera, z drugiej strony, nie ingeruje w lokalny przepływ pracy programisty i zapewnia, że ​​inni w projekcie opierają swoją pracę tylko na kodzie spełniającym określone kryteria. zwykle tego szukają ludzie, gdy wdrażają automatyczne kontrole.

ta automatyczna walidacja nie ma na celu zastąpienia kontroli jakości, jak sądzę, co zwykle osiąga się dzięki przeglądowi kodu lub programowaniu par.

jeśli znasz github , zauważysz, że „żądanie ściągnięcia” jest kolejnym podejściem do tego problemu. wiele projektów i firm open source używa żądania ściągania github do kontroli uprawnień oddziałów i przeglądu kodu. ale potrzebuje interakcji międzyludzkich, więc może nie być tym, o co prosisz.

Huang Tao
źródło
1

Jak już wskazałeś, robienie tego na kliencie, choć technicznie możliwe, prawdopodobnie nie jest praktyczne. Ponadto wielu użytkowników git wykonuje prace tymczasowe, więc przeprowadzanie drakońskich kontroli przy każdym zatwierdzeniu przynosi efekt przeciwny do zamierzonego.

Standardowym rozwiązaniem byłby hak po stronie serwera. Prawdopodobnie skonfigurowałbyś pre-receivehak, który działa za każdym razem, gdy przychodzi push, i który może odrzucić push, jeśli chce. Reszta zależy od dokładnych kontroli, które chcesz wykonać.

Jest to wyjaśnione w Pro Git , rozdział 7.3 Dostosowywanie Git - Git Hooks .

Śleske
źródło
Dziękuję za odpowiedź i naprawdę podoba mi się nowa strona internetowa Git. Moim jedynym problemem jest to, że ciężko jest zacząć pisać własne hooki, szczególnie dlatego, że nie wiesz, gdzie dokładnie się znajdujesz i co powinieneś sprawdzić. Jeśli próbuję napisać hak odbierania, czy zakładam, że pilot ma gałąź śledzenia tego, co pcham? Skąd mam wiedzieć? Chciałbym, żeby istniała jakaś funkcja git, która pozwoliłaby na symulację tego, co masz w tym momencie na czas.
dalanmiller