Przejdź do głównej zawartości

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.

KlasyfikacjaNa czym opiera się rozpoznanie
Revertlinia This reverts commit <identyfikator>, którą Git dopisuje do wiadomości przy git revert. Liczy się treść wiadomości, nie jej pierwszy wiersz.
Cherry-pickadnotacja cherry picked from commit <identyfikator>, którą Git dopisuje przy git cherry-pick -x.
Duplikat po rebasezestawienie 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-commit i własną wiadomość, jest dla Q247 zwykłym commitem.
  • Cherry-pick bez przełącznika -x nie 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.
Przełączenie przelicza dane stopniowo

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.

Ten przełącznik zapisuje się natychmiast

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ż