如何根据svn注释中的字符串获取subversion URL(trunk / branch)中的所有修订?

时间:2013-05-10 15:14:52

标签: bash shell svn revisions

在shell命令上需要一些帮助,以便根据svn注释中的字符串获取subversion trunk URL中的所有转速。

我想通过一个文件获取它,但不能通过URL。

我尝试svn log URL --stop-on-copysvn log URL --xml来获得转速但不成功。

谢谢!!

4 个答案:

答案 0 :(得分:1)

使用sed的另一种方式。它可能并不完美,但它也适用于多行注释。将SEARCH_STRING替换为您的个人搜索。

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

答案 1 :(得分:1)

对于Subversion 1.8,它是

svn log URL --search STRING

答案 2 :(得分: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 命令中的两个地方。
  • 为了在shell本身中使用x作为变量,您需要将整个命令放在一行(来自x=".."; svn log ... sed '...')。分号;可用于在同一行上分隔多个命令。
  • 我在示例中使用了--limit 10来限制日志条目的数量, 更改它以及使用其他svn log参数来适应您的 需要。使用--limit 10会将搜索限制为10个最新的日志条目。

答案 3 :(得分: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.