Як ви бачите останні записи журналу SVN?


194

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

Можливо, хлопці SVN думають, що я хотів подати цей висновок в іншу програму. Однак, якщо це так, було б більше сенсу мати більш багатослівний виклик програми - не користувача терміналу.

У будь-якому випадку, як я бачу лише деяку недавню активність, як-от останні 5 чи 10 записів, щоб побачити, що змінилося?


9
Так, це дійсно повинно працювати так, гм git log.
Пол Дрейпер

Відповіді:


262

limit варіант, наприклад:

svn log --limit 4

svn log -l 4

Лише останні 4 записи


127

Окрім того, що сказав Берт Ф , багато команд, у тому числі, 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відповідної глави книги Book Control Version with Subversion


8
Велике спасибі за це пояснення, @Daniel Dinnyes - у мене часто зустрічається протилежна проблема з ОП: я svn log .можу повернути для мене лише найбільш ранню редакцію (подібно до svn log --limit 4 .); але якщо я зателефоную svn log -r HEAD:1 ., то я нарешті отримаю всі записи, перелічені ... Ще раз дякую - ура!
sdaau

Це краще, оскільки svn log лише показують історію змін поточного шляху.
Ніндзя

41

Мені подобається використовувати -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

2
Дослідний варіант надзвичайно корисний
Джейсон Джордж

І якщо команда dev справді мила, вони поміщають ідентифікатор проблеми у коментарі svn, і ви можете легко знайти проблему, пов’язану з фіксацією.
Jonas Söderström

11

Трубопровід через lessінший або інший пейджер:

svn log | less

1
Якщо у вас є> 23k редакції, ви все одно будете чекати ~ 20 секунд, щоб побачити перші записи (а коли не використовуєте багатослівний журнал). Але це приємно - показує найсвіжіші вгорі. І краще, ніж TortoiseSVN на 100 підрядних підказок часу! Коли хочеш іти далі назад.
Томаш Гандор

6

Якщо хтось переглядає це старе запитання, зручна команда для перегляду змін після останнього оновлення:

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

ЛЕ (спасибі Гері за коментар)
те саме, але набагато коротше і логічніше:

svn log -r BASE:HEAD -v


8
або простоsvn log -r BASE:HEAD -v
Гері

5

Щоб додати те, що сказали інші, ви також можете створити псевдонім у файлі .bashrc або .bash_aliases:

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

або що ви хочете за замовчуванням


4

Як ви вже помітили, svn logкоманда, запущена без жодних аргументів, показує всі повідомлення журналу, які відносяться до вказаної URL-адреси або до робочої папки копії, де ви запускаєте команду.

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

  • svn log --limit NUM покаже лише першу кількість редакцій,
  • svn log --revision REV1(:REV2) покаже повідомлення журналу для перегляду REV1 або для діапазону REV1 - REV2,
  • svn log --searchпокажуть версії, які відповідають заданому вами шаблону пошуку (команда доступна в Subversion 1.8 та новіших клієнтах). Ви можете шукати за
    • автор редакції (тобто ім’я виконавців),
    • дата вчинення перегляду,
    • текст коментаря до редакції (повідомлення журналу),
    • список шляхів, змінених у редакції.

4

Ця відповідь спрямована на подальші запитання щодо варіантів підкоманд Subversion. Для кожного доступного підкоманди (наприклад, додавання, журнал, стан ...) ви можете просто додати --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

3

Але журнал svn все ще знаходиться в зворотному порядку, тобто найновіші записи виводяться спочатку, прокручуючи верхню частину мого терміналу і пішли. Я дуже хочу побачити останні записи, тобто порядок сортування повинен бути хронологічним. Єдиною командою, яка робить це, здається, svn log -r 1:HEADале це займає занадто багато часу в сховищі з приблизно 10000 записами. Я придумав це:

Відобразити останні 10 записів субверсії в хронологічному порядку:

svn log -r $(svn log -l 10 | grep '^r[0-9]* ' | tail -1 | cut -f1 -d" "):HEAD
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.