Kocham undo-tree
(zrzut ekranu poniżej). To pozwala w łatwy sposób do poruszania się różnymi wersjami pliku (górnym oknie), pozwalając na ruch użytkownika wokół drzewa historii pliku, w osobnym oknie (na dole okna) za pomocą prostych przycisków, takich jak n
, p
i C-b
, a C-f
do przełącznika całej potomków samo rodzic.
W szczególności automatycznie undo-tree
aktualizuje bufor przechowujący plik o odpowiednią wersję na podstawie zaznaczenia w widoku drzewa.
Oczywiście magit
jest fenomenalny dla git i byłoby zadziwiające, gdyby miał podobną zdolność, tj. Pozwalanie użytkownikom interaktywnie nawigować w historii git pliku, jednocześnie aktualizując bufor automatycznie przechowujący plik.
Czy jest to w ogóle możliwe magit
dzisiaj?
magit
history
undo-tree-mode
Amelio Vazquez-Reina
źródło
źródło
undo-tree
używa drzewa (jest w nazwie :-p), podczas gdy historia Gita to ukierunkowany wykres acykliczny . To może być nietrywialne.Odpowiedzi:
Magit niedawno uzyskał wsparcie dla czegoś takiego, ale ta funkcja jest nieco szorstka na brzegach i należy ją wyraźnie włączyć.
Podobna funkcja istniała od dłuższego czasu - kiedy przechodzisz od jednego zatwierdzenia do drugiego w buforze dziennika, a innym oknem w tej samej ramce jest bufor rewizji repozytorium, wówczas bufor ten jest odświeżany, aby pokazać to zatwierdzenie zamiast cokolwiek zatwierdzić poprzednio pokazywał.
Do niedawna bufor rewizji był tworzony przy pierwszym przejściu z jednego zatwierdzenia do drugiego. Zmieniłem to zachowanie, a teraz bufor wersji jest zawsze aktualizowany . Jeśli żadne okno w tej samej ramce nie wyświetla tego bufora, wówczas poruszanie się po dzienniku nie będzie już powodować wyświetlania bufora w jakimś nowym oknie lub istniejącym oknie, które poprzednio wyświetlało inny bufor.
Więc teraz musisz nacisnąć SPCraz, aby wyświetlić bufor wersji. Dopiero wtedy zacznie się aktualizować, gdy będziesz poruszać się po buforze dziennika.
Jeśli nie chcesz, aby bufor wersji był aktualizowany, wykonaj następujące czynności:
Jeśli z drugiej strony chcesz również aktualizować bufor wersji podczas poruszania się w buforze stanu, użyj tego:
Możliwe jest teraz automatyczne aktualizowanie bufora obiektów blob w podobny sposób. Najpierw dodaj to:
A może także:
Następnie w buforze dziennika (lub statusu) naciśnij, RETaby wyświetlić lub zaktualizować bufor wersji, a także przełączyć się na ten bufor. Przejdź do interesującego Cię pliku i naciśnij RETponownie. Znajdujesz się teraz w buforze odwiedzającym obiekty blob, który jest podobny do bufora odwiedzającego pliki, z tym wyjątkiem, że nie odwiedza on pliku w działającym drzewie, ale plik taki jak w jakimś zatwierdzeniu.
Wróć do bufora dziennika (lub statusu) i przejdź do innego zatwierdzenia. Bufor obiektów blob jest aktualizowany.
Zauważ, że wyświetlenie innego obiektu blob nie powoduje ponownego użycia istniejącego bufora obiektów blob. Zamiast tego tworzy nowy bufor, który odwiedza ten obiekt blob, a następnie wyświetla ten bufor w oknie, w którym wcześniej był wyświetlany inny bufor obiektu blob. Ten drugi bufor nie jest usuwany, co niestety oznacza, że całkiem sporo buforów może się zgromadzić w krótkim czasie. Który byłby jedną z tych szorstkich krawędzi, o których wspominałem wcześniej. Naciśnięcie qw buforze obiektów blob powoduje jego usunięcie, dzięki czemu można wyczyścić, przechodząc do okna, które było używane do wyświetlania różnych buforów obiektów blob, i naciskać, qaż wszystkie bufory zostaną usunięte.
Ponadto możliwe jest przejście do następnego lub poprzedniego obiektu blob z poziomu bufora obiektów blob za pomocą pi n. Zakładam, że w większości przypadków zaczynasz od ostatniego obiektu blob, a następnie przechodzisz wstecz do starszych obiektów blob za pomocą p. Jeśli to zrobisz, a następnie zechcesz przejść w innym kierunku, polecam użyć qdo zabicia bieżącego bufora, a tym samym przejścia do poprzedniego bufora, tj. Następnego obiektu blob.
Pamiętaj też, że nie musisz najpierw odwiedzać wersji, aby móc odwiedzić obiekt blob. Możesz także użyć
M-x magit-find-file RET <revision> RET <file> RET
bezpośrednio, ale wydaje mi się to mniej wygodne.źródło
20151014.231
(najnowszym, o ile mogę powiedzieć). Próbowałem wykonać kroki opisane powyżej. Poszedłem domagit-log-buffer-file
którego pozwala mi poruszać się rewizje w górę iw dółn
, ap
jednak po naciśnięciuSPC
lubRET
na jednej z nich pojawia się:Symbol's value as variable is void: magit-blame-mode
magit-blame-maybe-update-revision-buffer
domagit-section-movement-hook
przez pomyłkę.