Получить журнал SVN для активности пользователя на конкретную дату - PullRequest
10 голосов
/ 10 декабря 2010

Как посмотреть все svn журналы, которые я сделал на определенную дату?

Я искал в Интернете это, но не смог найти решение.

Ответы [ 4 ]

19 голосов
/ 10 декабря 2010

Чтобы показать записи для имени пользователя 10-го числа:

svn log -r '{2010-12-10}:{2010-12-11}'|sed -n '1p; 2,/^-/d; /username/,/^-/p'

Команда SVN получает коммиты в этом диапазоне дат

Разбивка команды sed:

  • -n - Не печатать автоматически.
  • 1p - Распечатать первую строку (заголовок ---).
  • 2,/^-/d; - Удалить все со второй череззакрытие --- заголовокПри этом удаляется первая запись, в которой IIRC является самым последним коммитом по состоянию на полночь в начале дня (то есть на самом деле он не находится в диапазоне и может быть длинным в прошлом).
  • /username/,/^-/p -Выведите все, начиная с этого имени пользователя (регулярное выражение, соответствующее интересующему вас пользователю), до закрывающего заголовка --- (это действует неоднократно)
4 голосов
/ 10 декабря 2010

Предполагая, что вы работаете в системе Linux, вы можете сделать что-то вроде этого:

svn log -r {YYYY-MM-DD}:{YYYY-MM-DD} | grep username | cut -d " " -f 1 | tail -n +2 | while read revision; do svn log -r $revision; done

То, что это делает, запускает svn log, чтобы получить все журналы за данный день, а затем обрезать вывод так, чтобы это был просто список номеров ревизий.[Редактировать: Добавлено tail -n +2, чтобы обрезать первую ревизию - как @Matthew упоминает, что первая строка будет самой последней ревизией до {that_day}] Затем цикл while перебирает каждую строку номеров ревизий, передавая ее * 1008.*.

Кроме того, помните, что {ГГГГ-ММ-ДД} относится к полуночи в начале того дня, поэтому, чтобы запустить весь день, вы должны запустить его для {that_day}:{the_following_day}.

Надеюсь, что это поможет!

(Кроме того, извините за путаницу ранее по поводу --username. Я никогда не использовал его раньше, и потому что у моей локальной svn есть только один пользователь (я),это выглядело , как будто оно работало, хотя на самом деле это не было.

1 голос
/ 28 апреля 2014
svn log --verbose --search user_name --revision {YYYY-MM-DD}:{YYYY-MM-DD}

Работает на любой платформе

0 голосов
/ 02 июля 2011

Если вы используете Linux, лучшее решение для получения журналов с полной датой выглядит следующим образом:

svn log -r {start date}:{end date} -v | sed -n ‘/username/,/—–$/ p’

Если вы хотите получить журналы SVN на основе имени пользователя и между заданным диапазоном дат, вам нужно использовать svn log -r {startDate}:{endDate}, который передается командой sed для имени пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...