Jako najlepszą praktykę git należy często się angażować, ale aby przejrzeć kod, konieczne może być przejrzenie poprawki składającej się z wielu zatwierdzeń naraz. Czy istnieje sposób, w jaki wielokrotne zatwierdzenia mogą być przeglądane i jednocześnie łączone lub odrzucane?Gerrit: łącz wielokrotne zatwierdzenia w jedną "zmianę"
Odpowiedz
Nie, Gerrit obecnie nie obsługuje potwierdzeń grupowania w jednym przeglądzie. Istnieje jednak kilka innych opcji.
Za $ DAYJOB mój zespół wykorzystuje gałęzie funkcjonalne do większych zmian. Mniejsze zatwierdzenia są sprawdzane/łączone indywidualnie z gałęzią operacji, ale gałąź funkcji jest scalana tylko wtedy, gdy wszystko jest w dobrym miejscu i wszyscy programiści są zadowoleni.
Gerrit obsługuje również gałęzie tematyczne - które są wygodnym sposobem grupowania powiązanych zatwierdzeń. Zostały one krótko omówione w documentation. Te zatwierdzenia muszą nadal być przeglądane/łączone indywidualnie, ale można je szybko zgrupować w interfejsie internetowym.
Jedną rzeczą, którą możesz zrobić, aby połączyć squash z tymczasowym oddziałem, a następnie opublikować tę zmianę do sprawdzenia.
git checkout -b feature
git commit -m "start feature"
...
git commit -m "finish feature"
git checkout -b feature-review master
git merge --squash feature
git commit
Teraz twój feature-review
oddział będzie zawierać tę samą diff względem master
jak feature
nie ale tylko jeden popełnienia.
Jeśli trzeba aktualizować już wysłana żądania ocenę następnie można wykorzystać zmianę zobowiązuje:
git commit --amend -C HEAD
a następnie dążyć do konsekwencji przeglądu.
Uważam, że publiczne commity powinny być atomowe i zawierać pełną gamę funkcji, które chcesz wnieść. Zwykle nie chcesz udostępniać wszystkich swoich pośrednich zobowiązań. Więc zgniatanie zatwierdza zanim opinia jest dobrym pomysłem.
Jedna ze szkół myśli mówi, że najlepiej jest wprowadzać zmiany destrukcyjne w postaci sekwencji maleńkich manifestacji atomowych, z których każdy jest gotowy do popchnięcia. Zachowanie tych drobnych zatwierdzeń ułatwia zobaczenie, co zrobiłeś i dlaczego, łatwiejsze do przywrócenia, sprawiło, że bisekcje były bardziej użyteczne, a recenzje łatwiejsze i szybsze (np. Kiedy plik danych został posortowany i dodano jedną linię, te dwa zatwierdzenia z dwoma komunikaty small commit sprawiają, że bardzo jasne jest, co się stało i dlaczego. "Squashing" oznacza, że duża różnica z tego rodzaju przesłania wstawienie.) Pomysł ten jest popularny w najlepszych miejscach, w których pracowałem. –
Dzięki za odpowiedź. Ale w jaki sposób można później przesuwać/scalać w celu opanowania po recenzjach kodu, które mogą wymagać zmian kodu? – Nonos
Możesz kontynuować pracę nad dowolną gałęzią (albo 'feature' lub' feature-review'), i chcesz to zrobić, kiedy to się skończy. Możesz nawet powtórzyć proces scalania squasha do ostatecznego zatwierdzenia do opanowania, w zależności od tego, jak bardzo zależy Ci na historii i rozbiciu zatwierdzeń. –
'git merge --squash'wypisze historię i nie pozwoli ci użyć' git bisect' na funkcji – summerbulb