Automatycznie wyklucz cherry-pick, revert i rebase ze statystyk
Włączony przełącznik Wyłącz/Włącz sprawia, że commity rozpoznane jako cherry-pick, revert albo rebase nie wliczają się do Kalorii i Linii, żeby ta sama praca (przeniesiona z innej gałęzi, cofnięta, odtworzona) nie liczyła się do statystyk więcej niż raz.
Jak Q247 rozpoznaje te commity
Każdy commit dostaje jedną z czterech klasyfikacji: zwykły, revert, cherry-pick albo duplikat po rebase. Rozpoznanie działa niezależnie od przełącznika, więc klasyfikacja jest zapisana zawsze; przełącznik decyduje tylko o tym, czy duplikat wypada ze statystyk.
| Klasyfikacja | Na czym opiera się rozpoznanie |
|---|---|
| Revert | linia This reverts commit <identyfikator>, którą Git dopisuje do wiadomości przy git revert. Liczy się treść wiadomości, nie jej pierwszy wiersz. |
| Cherry-pick | adnotacja cherry picked from commit <identyfikator>, którą Git dopisuje przy git cherry-pick -x. |
| Duplikat po rebase | zestawienie z commitami już policzonymi: to samo repozytorium, ten sam autor, ten sam znacznik czasu autorstwa i ten sam zestaw zmienionych plików. Porównywane są ścieżki plików, nie ich treść. |
Pierwsze dwie reguły czytają wyłącznie wiadomość commita. Trzecia jest jedyną, która porównuje commit z historią, i to ona wychwytuje przepisane identyfikatory po rebase albo force pushu, gdzie żadna adnotacja nie powstaje.
Granice tego mechanizmu
Tłumaczą one wyniki, które wyglądają na błąd:
- Revert napisany ręcznie nie zostanie rozpoznany. Cofnięcie zmian bez adnotacji Gita, na przykład przez
git revert --no-commiti własną wiadomość, jest dla Q247 zwykłym commitem. - Cherry-pick bez przełącznika
-xnie zostawia adnotacji. Wychwyci go dopiero reguła trzecia, i tylko wtedy, gdy autor, znacznik czasu i zestaw plików się zgadzają. - Rebase ze zmianą znacznika czasu autorstwa (na przykład przy
git commit --amend) tworzy commit, którego reguła trzecia nie skojarzy z pierwotnym. - Sam revert jest wykluczany, cofnięty commit zostaje. Praca, która została wycofana, liczy się więc raz, a nie zero razy.
- Dwa różne commity tego samego autora, z tym samym znacznikiem czasu i tym samym zestawem plików, zostaną uznane za duplikat. Zdarza się to przy commitach generowanych skryptem albo masowym formatowaniu.
- Ręczna decyzja ma pierwszeństwo. Commit włączony ręcznie do statystyk zostaje w nich niezależnie od klasyfikacji, co opisuje sekcja niżej.
Zmiana przełącznika nie przepisuje wszystkich commitów naraz. Q247 uzupełnia je partiami w tle, więc na dużej organizacji statystyki zmieniają się przez kilka kolejnych przebiegów, a nie od razu po zapisie.
Nie ma tu przycisku zapisu ani pytania o potwierdzenie. Kliknięcie od razu zmienia sposób wyliczania statystyk dla całej organizacji.
Wykluczenie pojedynczego commita
Poza automatyczną regułą można wykluczyć konkretny commit. Ta czynność odbywa się poza Konfiguracją: w oknie szczegółów commita, otwieranym z listy przyrostów na stronach Projekt, Zespół i Uczestnik. Okno ma przełącznik z dwoma stanami, "Wyklucz ze statystyk" i "Uwzględnij w statystykach", więc decyzję można w każdej chwili odwrócić.
Uprawnienia do tej czynności są inne niż do reszty tej zakładki. Wykluczyć commit może kierownik projektu, do którego należy repozytorium, albo menedżer zespołu. Sama rola Admin nie wystarcza: nie otwiera dostępu do danych biznesowych, więc administrator bez przypisania do projektu nie zobaczy tego przełącznika. Pełny podział opisują Uprawnienia.
Wykluczenie działa na jednym commicie i obejmuje wszystkie metryki liczone z jego zawartości: Kalorie, Przyrosty i Linie oraz wszystko, co z nich powstaje.
Zobacz też
- Wykluczenia wzorców plików: pomijanie całych kategorii plików
- Widoczność przyrostów: próg, powyżej którego przyrost chowa się z list
- Uprawnienia: kto może wykluczyć commit, a kto zmienić ustawienia organizacji