Как найти ревизии, сделанные конкретным пользователем Subversion? - PullRequest
7 голосов
/ 04 июня 2010

Используя командную строку, я хотел бы увидеть все изменения, сделанные конкретным пользователем. Это возможно? Я посмотрел документацию для svn log, но не вижу, как это сделать.

Ответы [ 5 ]

7 голосов
/ 04 июня 2010

Я не знаю ни одного способа сделать это, используя чистую Subversion. Но вы можете сделать это с sed:

svn log | sed -n '/username/,/-----$/ p'

Это находит каждый экземпляр имени пользователя, а затем печатает все до пунктирной линии, которая отмечает конец записи в журнале.

Шаблон поиска очень гибкий - вы можете легко изменить его для поиска других вещей. Например,

svn log | sed -n '/Dec 2009/,/-----$/ p'

Возвращает все коммиты, сделанные в декабре (любым автором).

Редактировать: Если вам не нужно фактическое сообщение о коммите, а просто сводные метаданные, то вы можете просто использовать grep, аналогично Windows ответа Уильяма Лиары

svn log | grep username
4 голосов
/ 25 февраля 2015

Самый простой подход - использовать клиент командной строки Subversion 1.8+; он поддерживает опции --search и --search-and, которые позволяют фильтровать вывод svn log для отображения только тех ревизий, которые соответствуют указанному вами шаблону поиска.

SVNBook 1.8 | svn log ссылка на командную строку ,

Замечания к выпуску Subversion 1.8 | svn log может фильтровать сообщения журнала на основе условий поиска.

Например,

поиск изменений, совершенных пользователем Салли или Гарри:

$ svn log --search Sally --search Harry https://svn.example.com/repos/test
------------------------------------------------------------------------
r1701 | Sally | 2011-10-12 22:35:30 -0600 (Wed, 12 Oct 2011) | 1 line

Add a reminder.
------------------------------------------------------------------------
r1564 | Harry | 2011-10-09 22:35:30 -0600 (Sun, 09 Oct 2011) | 1 line

Merge r1560 to the 1.0.x branch.
------------------------------------------------------------------------
$

поиск изменений, совершенных пользователем Салли в /foo/bar/helloworld.cpp:

$ svn log --verbose --search Sally --search-and /foo/bar/helloworld.cpp https://svn.example.com/repos/test
------------------------------------------------------------------------
r1555 | Sally | 2011-07-15 22:33:14 -0600 (Fri, 15 Jul 2011) | 1 line
Changed paths:
M /foo/bar/helloworld.cpp

Typofix.
------------------------------------------------------------------------
r1530 | Sally | 2011-07-13 07:24:11 -0600 (Wed, 13 Jul 2011) | 1 line
Changed paths:
M /foo/bar/helloworld.cpp
M /foo/build

Fix up some svn:ignore properties.
------------------------------------------------------------------------
$

ПРИМЕЧАНИЕ: Вы также можете использовать Диалог журнала изменений TortoiseSVN для выполнения поиска и фильтрации.

4 голосов
/ 05 июня 2010

Если вы не против прочитать журнал в формате XML, вот как это сделать с XML Starlet :

svn log --xml --verbose <directory> | xmlstarlet sel -t -m "/log/logentry/author[text()='<wanted author>']/.." -c "."

Если вы не хотите, чтобы эти файлы были в списке, удалите --verbose.

Вот пример вывода без многословия.

$ svn log --xml zfce | xmlstarlet sel -t -m "/log/logentry/author[text()='pekka.jarvinen']/.." -c "." 

<logentry revision="157">
<author>pekka.jarvinen</author>
<date>2009-09-26T19:23:40.060050Z</date>
<msg>fix</msg>
</logentry><logentry revision="156">
<author>pekka.jarvinen</author>
<date>2009-09-25T20:40:01.823746Z</date>
<msg>Dojo files are now downloaded from Google. Also some XHTML JS fixes (CDATA to &lt;script&gt;).</msg>
</logentry><logentry revision="155">
<author>pekka.jarvinen</author>
<date>2009-09-25T17:28:14.501392Z</date>
<msg>Added spans</msg>
</logentry><logentry revision="154">
<author>pekka.jarvinen</author>
<date>2009-09-25T17:21:17.375304Z</date>
<msg>Changed behavior: default.css is now not used as base. CSS in .INI configuration is always loaded.</msg>
</logentry><logentry revision="151">
<author>pekka.jarvinen</author>
<date>2009-04-10T00:24:41.683379Z</date>
<msg>Added more PHP and Apache information</msg>
</logentry>

...
2 голосов
/ 05 июня 2010

Версия для Windows:

svn log | find "William_Leara"

Вывод выглядит так:

r11506 | William_Leara | 2009-12-23 19:29:12 -0600 (Wed, 23 Dec 2009) | 12 lines
r11505 | William_Leara | 2009-12-23 15:18:37 -0600 (Wed, 23 Dec 2009) | 12 lines
r11504 | William_Leara | 2009-12-22 19:16:12 -0600 (Tue, 22 Dec 2009) | 12 lines
r11503 | William_Leara | 2009-12-22 19:04:15 -0600 (Tue, 22 Dec 2009) | 12 lines
r11502 | William_Leara | 2009-12-22 18:49:33 -0600 (Tue, 22 Dec 2009) | 12 lines
r11501 | William_Leara | 2009-12-22 18:26:45 -0600 (Tue, 22 Dec 2009) | 12 lines
r11500 | William_Leara | 2009-12-22 18:05:04 -0600 (Tue, 22 Dec 2009) | 12 lines
r11499 | William_Leara | 2009-12-22 17:25:25 -0600 (Tue, 22 Dec 2009) | 12 lines
r11498 | William_Leara | 2009-12-22 17:03:18 -0600 (Tue, 22 Dec 2009) | 12 lines
r11497 | William_Leara | 2009-12-22 16:54:59 -0600 (Tue, 22 Dec 2009) | 12 lines
r11494 | William_Leara | 2009-12-21 14:36:20 -0600 (Mon, 21 Dec 2009) | 12 lines
r11491 | William_Leara | 2009-12-19 12:48:49 -0600 (Sat, 19 Dec 2009) | 12 lines

и т.д.

1 голос
/ 24 ноября 2015

В Windows, используя UnxUtils версию sed, мне нужно было вместо этого использовать эти регулярные выражения, соответствующие ---- в следующем начале строки:

svn log | sed -n "/username/,/^----/p"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...