Ответ 1
limit
, например:
svn log --limit 4
svn log -l 4
Только последние 4 записи
Ввод svn log
выливает невероятно длинный, бесполезный список в командной строке. Я понятия не имею, почему это по умолчанию. Если бы я хотел читать (или даже читать) 300 записей на терминале, я бы не прочь набрать svn log --full
или что-то подобное.
Возможно, ребята SVN думают, что я хочу передать этот вывод другой программе. Однако, если это так, было бы разумнее иметь более подробный вызов для программы - не пользователь терминала.
В любом случае, как я могу увидеть только недавнюю активность, например последние 5 или 10 записей, чтобы увидеть, что изменилось?
limit
, например:
svn log --limit 4
svn log -l 4
Только последние 4 записи
Кроме того, что Bert 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
или к соответствующей главе в книге Version Control with Subversion
Мне нравится использовать -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
Произведите вывод через less
или другой пейджер:
svn log | less
Чтобы добавить к словам других, вы также можете создать псевдоним в файле .bashrc или .bash_aliases:
alias svnlog='svn log -l 30 | less'
или все, что вы хотите по умолчанию
Но журнал svn по-прежнему находится в обратном порядке, т.е. сначала выводятся самые последние записи, прокручиваются сверху моего терминала и исчезают. Я действительно хочу видеть последние записи, т.е. Порядок сортировки должен быть хронологическим. Единственная команда, которая делает это, выглядит как 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
Если кто-то смотрит на этот старый вопрос, удобная команда, чтобы увидеть изменения со времени последнего обновления:
svn log -r $(svn info | grep Revision | cut -f 2 -d ' '):HEAD -v
LE (спасибо Гэри за комментарий)
то же самое, но гораздо короче и логичнее:
svn log -r BASE:HEAD -v
Как вы уже заметили svn log
команда, запущенная без каких-либо аргументов, показывает все сообщения журнала, которые относятся к указанному вами URL-адресу или к где вы запускаете команду.
Вы всегда можете уточнить/ограничить результаты svn log
:
svn log --limit NUM
будет отображаться только первый NUM изменений,svn log --revision REV1(:REV2)
отобразит сообщение журнала для версии REV1 или для диапазона REV1 - REV2,svn log --search
будут отображаться версии, соответствующие указанному шаблону поиска (команда доступна в Subversion 1.8 и более новом клиенте). Вы можете искать по
Этот ответ посвящен дальнейшим вопросам относительно подкоманд Subversion. Для каждой доступной подкоманды (т.е. Add, log, status...) вы можете просто добавить параметр --help
, чтобы отобразить полный список доступных параметров, которые вы можете использовать с вашей подкомандой, а также примеры того, как их использовать. Следующий фрагмент берется непосредственно из вывода команды svn log --help
в разделе "Примеры":
Show the latest 5 log messages for the current working copy
directory and display paths changed in each commit:
svn log -l 5 -v