Jak widzisz ostatnie wpisy w dzienniku SVN?

194

Wpisywanie svn logwyrzuca niesamowicie długą, bezużyteczną listę w wierszu poleceń. Nie mam pojęcia, dlaczego to jest domyślne. Gdybym chciał przeczytać (a nawet czytać) 300 wpisów na terminalu, nie miałbym nic przeciwko pisaniusvn log --full lub czymś podobnym.

Być może faceci SVN myślą, że chciałbym przekazać to wyjście do innego programu. Jednak w takim przypadku bardziej sensowne byłoby bardziej szczegółowe wywołanie programu - nie użytkownika terminala.

W każdym razie, jak mogę zobaczyć ostatnie aktywności, takie jak ostatnie 5 lub 10 wpisów, aby zobaczyć, co się zmieniło?

Xeoncross
źródło
9
Tak, to naprawdę powinno działać jak git log.
Paul Draper

Odpowiedzi:

262

limit opcja, np .:

svn log --limit 4

svn log -l 4

Tylko 4 ostatnie wpisy

Bert F.
źródło
127

Oprócz tego, co powiedział Bert F , wiele poleceń, w tym także logma opcję -r(lub --revision). Poniżej przedstawiono kilka praktycznych przykładów używania tej opcji do wyświetlania zakresów wersji:

Aby wyświetlić listę w porządku rosnącym:

svn log -r 1:HEAD

Aby wyświetlić listę w kolejności malejącej:

svn log -r HEAD:1

Aby wyświetlić wszystko od trzynastego do podstawy aktualnie sprawdzanej wersji w porządku rosnącym:

svn log -r 13:BASE

Aby uzyskać wszystko między podanymi datami:

svn log -r {2011-02-02}:{2011-02-03}

Możesz połączyć wszystkie powyższe wyrażenia z --limitopcją, aby mieć dość szczegółową kontrolę nad tym, co jest drukowane. Więcej informacji na temat tych -rwyrażeń znajduje się svn help logw odpowiednim rozdziale książki Kontrola wersji z Subversion

Daniel Dinnyes
źródło
8
Bardzo dziękuję za to wyjaśnienie, @Daniel Dinnyes - często mam odwrotny problem od OP: svn log .może zwrócić mi tylko najwcześniejszą wersję (podobnie z svn log --limit 4 .); ale jeśli zadzwonię svn log -r HEAD:1 ., w końcu otrzymam wszystkie wpisy na liście ... Jeszcze raz dziękuję - na zdrowie!
sdaau
Jest to lepsze, ponieważ svn log pokazuje tylko historię zmian bieżącej ścieżki.
Ninja
41

Lubię używać -vw trybie pełnym.
Otrzymasz identyfikator zatwierdzenia, komentarze i wszystkie pliki, których dotyczy problem.

svn log -v --limit 4

Przykład wyniku:

I added some migrations and deleted a test xml file
------------------------------------------------------------------------
r58687 | mr_x | 2012-04-02 15:31:31 +0200 (Mon, 02 Apr 2012) | 1 line Changed
paths: 
A /trunk/java/App/src/database/support    
A /trunk/java/App/src/database/support/MIGRATE    
A /trunk/java/App/src/database/support/MIGRATE/remove_device.sql
D /trunk/java/App/src/code/test.xml
Jonas Söderström
źródło
2
Opcja gadatliwa jest niezwykle przydatna
Jason George
A jeśli zespół deweloperów jest naprawdę słodki, umieszcza identyfikator problemu w komentarzu svn i łatwo można znaleźć problem związany z zatwierdzeniem.
Jonas Söderström
11

Przeprowadź wyjście przez lesslub inny pager:

svn log | less
Greg Hewgill
źródło
1
Jeśli masz> 23 tys. Wersji, nadal będziesz czekać ~ 20 sekund, aby zobaczyć pierwsze wpisy (i gdy nie używasz pełnego dziennika). Ale to miłe - pokazuje najnowsze na górze. I lepsze niż 100 stronicowania TortoiseSVN na raz! Kiedy chcesz wrócić dalej.
Tomasz Gandor
6

Jeśli ktoś patrzy na to stare pytanie, przydatne polecenie, aby zobaczyć zmiany od ostatniej aktualizacji:

svn log -r $(svn info | grep Revision | cut -f 2 -d ' '):HEAD -v

LE (dzięki Gary za komentarz) to
samo, ale o wiele krótsze i bardziej logiczne:

svn log -r BASE:HEAD -v

Katalina
źródło
8
lub po prostusvn log -r BASE:HEAD -v
Gary
5

Aby dodać do tego, co powiedzieli inni, możesz również utworzyć alias w pliku .bashrc lub .bash_aliases:

alias svnlog='svn log -l 30 | less'

lub cokolwiek chcesz jako domyślne

James-Geldart
źródło
4

Jak już zauważyłeś, svn logpolecenie uruchomione bez żadnych argumentów pokazuje wszystkie komunikaty dziennika dotyczące podanego adresu URL lub folderu kopii roboczej, w którym uruchomiono polecenie.

Zawsze możesz zawęzić / ograniczyć svn logwyniki:

  • svn log --limit NUM pokaże tylko pierwszą liczbę poprawek,
  • svn log --revision REV1(:REV2) pokaże komunikat w dzienniku dla wersji REV1 lub dla zakresu REV1 - REV2,
  • svn log --searchwyświetli wersje pasujące do określonego wzorca wyszukiwania (polecenie jest dostępne w Subversion 1.8 i nowszych klientach). Możesz wyszukiwać według
    • autor zmiany (tj. nazwa użytkownika osoby zatwierdzającej),
    • data popełnienia zmiany,
    • tekst komentarza do korekty (komunikat w dzienniku),
    • lista ścieżek zmienionych w wersji.
bahrep
źródło
4

Ta odpowiedź dotyczy dalszych pytań dotyczących opcji komend Subversion. Dla każdej dostępnej podkomendy (tj. Dodawania, dziennika, statusu ...) możesz po prostu dodać --helpopcję wyświetlania pełnej listy dostępnych opcji, których możesz użyć z podkomendą, a także przykłady ich użycia. Poniższy fragment kodu jest pobierany bezpośrednio z danych svn log --helpwyjściowych polecenia w sekcji „przykłady”:

Show the latest 5 log messages for the current working copy
directory and display paths changed in each commit:
  svn log -l 5 -v
h3X3n
źródło
3

Ale dziennik svn jest nadal w odwrotnej kolejności, tzn. Najnowsze wpisy są wypisywane jako pierwsze, przewijane u góry mojego terminalu i zniknęły. Naprawdę chcę zobaczyć ostatnie wpisy, tzn. Kolejność sortowania musi być chronologiczna. Wydaje się, że to jedyne poleceniesvn log -r 1:HEAD jednak zajmuje dużo więcej czasu w repozytorium z około 10000 pozycji. Wymyśliłem to:

Wyświetl 10 ostatnich pozycji subversion w kolejności chronologicznej:

svn log -r $(svn log -l 10 | grep '^r[0-9]* ' | tail -1 | cut -f1 -d" "):HEAD
Othmar Wigger
źródło