jak repo synchronizować według daty?

4

Czy mogę użyć repodo synchronizacji według daty? (możliwe w git )

Na przykład chcę pobrać źródło od 1 marca o 15:00. Potrzebuję sposobu, aby pobrać konkretną bazę źródła CyanogenMod9 . Byłoby miło użyć tagu lub ID zatwierdzenia, ale źródło jest zorganizowane w kilku sub-repozytoriach, które nie mają wspólnych tagów. Myślę, że mógłbym dokonać transakcji według daty. Propozycje?

tony19
źródło

Odpowiedzi:

6

Wygląda na to, że będę musiał użyć repo forall. Wymaga to najpierw synchronizacji wszystkiego (nie można pobrać starszego kodu, dopóki repozytorium nie zostanie w pełni pobrane).

repo forall -c 'git checkout `git rev-list --all -n1 --before="2012-03-01 15:00"`'
tony19
źródło
2
Zakłada się, że manifest w ogóle się nie zmienił. Jeśli bieżący manifest jest inny niż manifest w dniu zainteresowania, mogą cię ugryźć różnego rodzaju problemy --- różne gałęzie, ścieżki, polecenia kopiowania plików itp.
Jeremy Frank
Naprawdę nie powinieneś używać --alltutaj. Spowoduje to wyświetlenie zatwierdzeń z dowolnego oddziału. Z pewnością nie chcesz odejść od obecnego oddziału. Chcesz tylko przejść do pierwszego zatwierdzenia w historii obecnego oddziału, który spełnia wymaganie „przed”:repo forall -c 'git checkout `git rev-list -n1 --before="2012-03-01 15:00"` HEAD'
schlimmchen
@schlimmchen Myślę, że twój poprzedni cytat jest niewłaściwy, myślę, że „ HEAD” również powinien znajdować się w cudzysłowie.
skyking
@skyking Tak, oczywiście masz rację! repo forall -c 'git checkout `git rev-list -n1 --before="2012-03-01 15:00" HEAD`'
schlimmchen,