2012-06-13 9 views
8

Jak mogę sprawdzić, jaka wersja była obecna w repozytorium git w danym czasie?git sprawdź czas, w którym zatwierdzono zatwierdzenie

Powiedz, że mam wspólne repozytorium, w którym kilku użytkowników może przesyłać zmiany, i chcę zatrzymać migawkę o godzinie 12:00 danego dnia w przeszłości.

Jeśli ktoś dokona lokalnego zatwierdzenia o godzinie 11:30, ale tylko popchnie go do centralnych repo o 12:30, czy mogę to później wykryć?

Czy mogę wykryć, czy osoba działająca po godz. 12:00 napisała lokalną zgodę na zarejestrowanie daty zatwierdzenia o godz. 11:30, a następnie przekazała tę wersję?

Odpowiedz

10

Sam Git nie śledzi tych informacji, ale mogłem spojrzeć na sygnaturę czasową pliku w pliku obiektu commit w katalogu "objects" w repozytorium git na samym serwerze.

1

Możesz użyć haka, prawdopodobnie post-receive hook do przechowywania wymaganych informacji gdzieś sam, lub po prostu włączyć reflog (jest on domyślnie wyłączony w repozytorium gołym). Reflog automatycznie śledzi lokalną historię oddziału i np. git reflog -1 --format=%H [email protected]{12:00} powie Ci, co zostało zatwierdzone przez mistrza, wskazując na godzinę 12:00.

Należy pamiętać, że reflog wygasa, można skonfigurować czas wygaśnięcia z gc.reflogexpire.

2

nie rejestruje, kiedy rzeczy są przesyłane do repozytorium (lub pobierane w tym celu), tylko dwa znaczniki czasu w samych commitach, więc nie sądzę, że istnieje niezawodny sposób na wykonanie tego bez pisania haków, które przechowuj gdzieś dodatkowe metadane lub polegaj na logowaniu wykonanym przez git-daemon, ssh lub twój serwer http, w zależności od tego, jaka metoda jest używana do wypychania/pobierania.

Powiązane problemy