Как вы видите последние записи журнала SVN? - PullRequest
183 голосов
/ 03 февраля 2011

Ввод svn log выплевывает невероятно длинный, бесполезный список в командной строке. Я понятия не имею, почему это по умолчанию. Если бы я хотел прочитать (или даже мог прочитать) 300 записей на терминале, я бы не стал печатать svn log --full или что-то подобное.

Возможно, ребята из SVN думают, что я хотел передать этот вывод в другую программу. Однако, если это так, было бы более целесообразно иметь более подробный вызов для программы, а не для пользователя терминала.

В любом случае, как мне увидеть только некоторые недавние действия, такие как последние 5 или 10 записей, чтобы увидеть, что изменилось?

Ответы [ 9 ]

246 голосов
/ 03 февраля 2011

limit опция, например:

svn log --limit 4

svn log -l 4

Только последние 4 записи

125 голосов
/ 03 февраля 2011

Помимо того, что Берт F сказал , многие команды, включая log, имеют опцию -r (или --revision).Ниже приведены некоторые практические примеры использования этой опции для отображения диапазонов ревизий:

Чтобы отобразить все в порядке возрастания:

svn log -r 1:HEAD

Чтобы отобразить все в порядке убывания:

svn log -r HEAD:1

Чтобы перечислить все, начиная с тринадцатого до основания проверенной в настоящий момент ревизии в порядке возрастания:

svn log -r 13:BASE

Чтобы получить все между указанными датами:

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

ВыМожно комбинировать все вышеперечисленные выражения с параметром --limit, так что вы можете иметь достаточно детальный контроль над тем, что печатается.Для получения дополнительной информации об этих -r выражениях см. svn help log или соответствующую главу в книге Контроль версий с Subversion

40 голосов
/ 03 апреля 2012

Мне нравится использовать -v для подробного режима.
Это даст вам идентификатор фиксации, комментарии и все затронутые файлы.

svn log -v --limit 4

Пример вывода:

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
11 голосов
/ 03 февраля 2011

Передайте вывод через less или другой пейджер:

svn log | less
5 голосов
/ 11 декабря 2012

Чтобы добавить то, что сказали другие, вы также можете создать псевдоним в своем файле .bashrc или .bash_aliases:

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

или что вы хотите по умолчанию

4 голосов
/ 13 февраля 2015

Как вы уже заметили, команда svn log, запущенная без аргументов, показывает все сообщения журнала, которые относятся к указанному вами URL-адресу или к папке рабочей копии, в которой вы запускаете команда.

Вы всегда можете уточнить / ограничить svn log результаты:

  • svn log --limit NUM покажет только первое NUM ревизий,
  • svn log --revision REV1(:REV2) покажет сообщение журнала для версии REV1 или для диапазона REV1 - REV2,
  • svn log --search покажет ревизии, соответствующие указанному вами шаблону поиска (команда доступна в Subversion 1.8 и более новых клиентах). Вы можете искать по
    • автор ревизии (т.е. имя пользователя committers),
    • дата совершения ревизии,
    • текст комментария к редакции (сообщение в журнале),
    • список путей, измененных в ревизии.
3 голосов
/ 21 июля 2016

Этот ответ направлен на дальнейшие вопросы, касающиеся параметров подкоманд Subversion. Для каждой доступной подкоманды (то есть, add, log, status ...) вы можете просто добавить опцию --help, чтобы отобразить полный список доступных опций, которые вы можете использовать с подкомандой, а также примеры их использования. Следующий фрагмент взят непосредственно из вывода команды svn log --help в разделе «examples»:

Show the latest 5 log messages for the current working copy
directory and display paths changed in each commit:
  svn log -l 5 -v
3 голосов
/ 05 марта 2014

В случае, если кто-нибудь смотрит на этот старый вопрос, удобная команда, чтобы увидеть изменения с момента вашего последнего обновления:

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

LE (спасибо Гэри за комментарий)
то же самое, но гораздо короче и логичнее:

svn log -r BASE:HEAD -v

3 голосов
/ 19 сентября 2013

Но svn log по-прежнему в обратном порядке, то есть самые последние записи выводятся первыми, прокручиваются сверху моего терминала и исчезают. Я действительно хочу увидеть последние записи, то есть порядок сортировки должен быть хронологическим. Единственная команда, которая делает это, похоже, svn log -r 1:HEAD, но это занимает слишком много времени в репозитории с примерно 10000 записями. Я придумал это это:

Показать последние 10 записей Subversion в хронологическом порядке:

svn log -r $(svn log -l 10 | grep '^r[0-9]* ' | tail -1 | cut -f1 -d" "):HEAD
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...