2013-08-30 30 views
30

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

13

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.

22

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.

+1

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

+0

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ń. –

+5

'git merge --squash'wypisze historię i nie pozwoli ci użyć' git bisect' na funkcji – summerbulb

0

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.

+0

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. –