2013-05-10 2 views
3

Нужна помощь по команде оболочки, чтобы получить все обороты в URL-адрес соединительной линии subversion на основе строки в комментариях svn.Как получить все изменения в URL-адресе subversion (trunk/branch) на основе строки в svn-комментариях?

Я понял, чтобы получить его в одном файле, но не по URL.

Я попробовал svn log URL --stop-on-copy и svn log URL --xml, чтобы получить обороты, но безуспешно.

Спасибо!

+0

Что значит "не работает" означает? У меня нет проблем (с 1.7) получить полный набор сообщений журнала, специфичных для любого поддерева через URL. – parsifal

+0

Я имел в виду, как получить только те обороты, основанные на строке в комментариях svn - как номер билета. Я попытался подключиться к «svn log URL --stop-on-copy» и «svn log URL -xml» .. – iaav

+0

Так что «не работает» означает «Я не могу извлечь то, что мне нужно из многострочного вывода 'svn log'? В этом случае я предполагаю, что строка командной строки * Sithsu * будет делать то, что вы хотите (не пробовал). К сожалению, 'svn log' не дает вам возможности генерировать собственный формат. – parsifal

ответ

0

Попробуйте следовать.

x="refactoring"; svn log --limit 10 | egrep -i --color=none "($x|^r[0-9]+ \|.*lines$)" | egrep -B 1 -i --color=none $x | egrep --color=none "^r[0-9]+ \|.*lines$" | awk '{print $1}' | sed 's/^r//g' 

Заменить refactoring на строку поиска.
Изменить параметры svn log, чтобы удовлетворить ваши потребности.
Используется нечувствительность к регистру (egrep -i).


Редактировать на комментарий.

x="ILIES-113493"; svn log | egrep -i --color=none "($x|^r[0-9]+ \|.*lines$)" | egrep -B 1 -i --color=none $x | egrep --color=none "^r[0-9]+ \|.*lines$" | awk '{print $1}' | sed 's/^r//g' 

Примечания:

  • x переменная содержит строку поиска, и x используется в два места в команде.
  • Чтобы использовать x в качестве переменной в самой оболочке, вам нужно поместить всю команду в одну строку (от x=".."; svn log ... sed '...'). Точка с запятой ; может использоваться для разделения нескольких команд в одной строке.
  • Я использовал --limit 10 в примере, чтобы ограничить количество записей в журнале, изменить это, а также использовать другие параметры svn log для вашего . Использование --limit 10 ограничит поиск 10 самыми последними записями журнала.
+0

@iaav Обновленный ответ. Пара проблем в том, как вы это пробовали. 1) пробел после номера билета в первом egrep.2) x также используется во втором эгрепе, также должен был заменить его номером билета. 3) '-limit 10' даст только последние 10 записей. Я использовал его для тестирования. – Sithsu

0

Спасибо всем за помощь !! Это сработало для меня:

svn log $URL --stop-on-copy | grep -B 2 $STRING | grep "^r" | cut -d"r" -f2 | cut -d" " -f1 

Use "--stop-on-copy" or "--limit" options depending on the requirement. 
1

Другой способ использования sed. Это, вероятно, не идеально, но также работает с многострочными комментариями. Замените SEARCH_STRING для личного поиска.

svn log -l100 | sed -n '/^r/{h;d};/SEARCH_STRING/{g;s/^r\([[:digit:]]*\).*/\1/p}' 
1

Для Subversion 1.8 это

svn log URL --search STRING