Czy można znaleźć, kto usunął tag git z repozytorium?Zobacz, kto usunął tag git
Załóżmy, że masz repozytorium z autorami. Repozytorium ma znacznik dev
i wersje: v0.1.0
, v0.1.1
itd.
Ktoś usuwa tag. Jak można znaleźć , który usunął tag git?
Czy można znaleźć, kto usunął tag git z repozytorium?Zobacz, kto usunął tag git
Załóżmy, że masz repozytorium z autorami. Repozytorium ma znacznik dev
i wersje: v0.1.0
, v0.1.1
itd.
Ktoś usuwa tag. Jak można znaleźć , który usunął tag git?
Masz dwa rodzaje znaczników:
Lekkie znaczniki są tylko metadane dla commit. Nie mają autorów samodzielnie. Mówienie, że autor tagu jest autorem zatwierdzenia, jest błędne, ponieważ każdy inny mógł oznaczyć to zatwierdzenie przy pomocy lekkiego tagu.
Z kolei znaczniki z adnotacjami są podobne do zatwierdzeń. Dlatego znaczniki z adnotacjami również potrzebują wiadomości podczas ich tworzenia. Mają autora, opis, itp.
Aby poznać autorów tagów, musisz mieć politykę z przypisami do adnotacji. Ale z tego, co wiem, nie ma historii metadanych git repo (katalog .git
). Oznacza to, że nie możesz wiedzieć, kto usunął tag/branch/etc, chyba że twój dostawca git ma mechanizm do audytu/log/this.
@CharlesB W ostatnim zdaniu mówiłem, że nie jest to możliwe po prostu z git. –
Po tym git końcówką o restoring deleted tags, można wykonać następujące czynności:
Znajdź wszystkie nieosiągalne tagi w git fsck
:
git fsck --unreachable | grep tag
a następnie dla każdej hash popełnienia na wyjściu, uruchom
git show COMMIT_HASH
Jeśli chcesz skrypt powłoki do wyświetlania wszystkich nieosiągalnych (usuniętych) tagów z odpowiednią osobą (Tagger), możesz uruchomić następujący przecinek nd:
for commit in `git fsck --unreachable | grep tag | awk '{ print $3 }'`; do
git show $commit | grep -E "^(tag|Tagger)";
done
EDIT: To nie jest odpowiedź na pytanie zadane rzeczywiste, ale mówi, jak zobaczyć autorom wszystkich tagów nieosiągalny w indeksie.
Odszukuje wszystkie niedostępne obiekty znaczników, ale obiekty znaczników nie są tworzone dla wszystkich znaczników.Pokazuje również, kto utworzył tag, ale pytanie zadaje pytanie, kto usunął tag. – hvd
Hm ... To interesujące. Dlaczego nie tagować obiektów, które mają zostać utworzone dla wszystkich tagów? – Frost
Obiekty znaczników nie są tworzone dla prostego 'git tag-name', ponieważ nie ma powodu, dla którego by były. Jeśli to zrobisz, dodaje się ref i to wszystko, co jest potrzebne. Obiekty znaczników tworzone są tylko za pomocą 'git tag - [asu]', patrz 'git help tag', kiedy wiadomość ma być przechowywana wraz ze znacznikiem, który nie należy do zatwierdzenia. – hvd
Git tak naprawdę nie rejestruje, co dzieje się podczas wypychania. Ten post git: how to see changes due to push? sugeruje, że reflog jest aktualizowany po naciśnięciu, ale wątpię, aby logował usunięcie tagu.
Można wyłączyć usunięcie znacznika na push (i jest to dobry pomysł): Disable tag deletion
Jaki jest Twój repozytorium protokół dostępu? Czy masz uprawnienia do przeglądania dzienników na serwerze repozytorium? –
Używam protokołu 'ssh' ... Nie rozumiem drugiego pytania. Czy masz na myśli 'git log'? –
Domyślnie sprawdzanie dzienników dostępu ssh wymaga uprawnień administratora. Nie, mam na myśli uprawnienia do przeglądania '/ var/log/auth.log' na serwerze repo. –