Shell svn日志详细,但不包括一个修订详细信息
如何获取svn日志但排除分支添加的信息?如下面“svn log-v--stop on copy”的输出,如何避免-r101?我正在尝试将其重定向到一个临时文件,并只获取文件的添加/修改/删除详细信息。所以只需要记录详细信息,而不需要分支机构创建的修订Shell svn日志详细,但不包括一个修订详细信息,shell,svn,unix,awk,cut,Shell,Svn,Unix,Awk,Cut,如何获取svn日志但排除分支添加的信息?如下面“svn log-v--stop on copy”的输出,如何避免-r101?我正在尝试将其重定向到一个临时文件,并只获取文件的添加/修改/删除详细信息。所以只需要记录详细信息,而不需要分支机构创建的修订 svn log -v local/svn/demo/branches/Fix --stop-on-copy -------------------------------------------------------------------
svn log -v local/svn/demo/branches/Fix --stop-on-copy
------------------------------------------------------------------------
r105 | user4 | 2013-05-24 16:27:11 -0400 (Fri, 24 May 2013) | 1 line
Changed paths:
M /branches/Fix/Code/Environment/RT/properties/build.properties
ticket-9
------------------------------------------------------------------------
r104 | user4 | 2013-05-24 16:27:07 -0400 (Fri, 24 May 2013) | 1 line
Changed paths:
M /branches/Fix/Code/Environment/DEV/properties/build.properties
ticket-7
------------------------------------------------------------------------
r103 | user2 | 2013-05-24 15:27:25 -0400 (Fri, 24 May 2013) | 2 lines
Changed paths:
M /branches/Fix/Code/SharedApp/src/gov/illinois/ies/business/rules/ed/CorticonFinIncomeEntiyLoader.java
ticket-2
------------------------------------------------------------------------
r102 | user1 | 2013-05-24 15:19:54 -0400 (Fri, 24 May 2013) | 2 lines
Changed paths:
M /branches/Fix/Code/BEAN/Framework/ejbModule/gov/illinois/ies/business/rules/entities/fin/Income.java
ticket-2
------------------------------------------------------------------------
r101 | user4 | 2013-05-24 12:46:12 -0400 (Fri, 24 May 2013) | 3 lines
Changed paths:
A /branches/Fix (from /tags/2013-05-24T08:00:01.187-04:00_DEV_branch_WP_BUILD:100)
ticket-1
Re-creating the WP_Fix branch for 8AM tag
进一步更新:--现在我正在运行此::
svn log "$src_url" --stop-on-copy | grep -B 2 "$ticket" | grep "^r" | cut -d"r" -f2 | cut -d" " -f1 | sort -r
我的输出是:
105
104
103
102
101
预期产出:
105
104
103
102
使用
awk
可以使用regex range
。像这样的东西可以跳过你不想要的部分
awk '/r101/,/^$/ {next}1' <(svn log -v --stop-on-copy)
awk'/r101/,/^$/{next}1'选择适当的记录分隔符可以简化问题。根据您的示例输入,此
生成所需的输出
awk -v RS='(^|\n)-+\n' '
# ignore empty records
/^$/ {next}
# assume "A /branches/" is the the pattern for what you want to ignore
/A \/branches\// {next}
# print the revision number without its first character
{print substr($1, 2)}
'
regex(^ |\n)-+\n
的意思是:从数据的开头或换行符开始,匹配一个或多个连字符,后跟一个换行符。您尝试过什么吗?使用svn--复制时停止修订版并不总是一样的。您希望从上面的日志中得到什么输出?我只是展示了一种使用regex
的方法。当我运行svn时--stop on copy
…它应该排除输出中的最后一个修订。就像上面的例子一样-r101@iaav根据需要获取文件详细信息的要求更新了答案。我建议使用$1~/^[AMD]$/
。为什么使用
awk -v RS='(^|\n)-+\n' '
# ignore empty records
/^$/ {next}
# assume "A /branches/" is the the pattern for what you want to ignore
/A \/branches\// {next}
# print the revision number without its first character
{print substr($1, 2)}
'