2016-11-22 25 views
-1

如何獲得在註釋中沒有jira ticket#提交的SVN修訂版本?一條命令獲取SVN修訂沒有評論

------------------------------------------------------------------------ 
r1 | user2 | 2006-11-22 02:13:42 -0500 (Tue, 22 Nov 2006) | 1 line 
Changed paths: 
M /trunk/testfile.txt 

added new file 
------------------------------------------------------------------------ 
r2 | user 3 | 2006-11-22 02:08:37 -0500 (Tue, 22 Nov 2006) | 1 line 
Changed paths: 
M /trunk/testfile1.txt 

added new file 
------------------------------------------------------------------------ 
r3 | user 1| 2006-11-18 02:13:56 -0500 (Fri, 18 Nov 2006) | 1 line 
Changed paths: 
M /trunk/testfile5.txt 

Jira_issue-123 added new file 

所需的輸出:

r1 
r2 
+1

你可以發佈一個示例輸入和你想看到的輸出嗎? – dood

+0

現在編輯該問題。 – iaav

回答

0

解析日誌以XML格式

如果要分析日誌可靠,使用--xml選項,能夠XML的工具解析。我會推薦xmlstarlet

例如,下面的命令列出了修訂號:

svn log -q --xml | xmlstarlet sel -t -v '//logentry/@revision' 

樣本輸出

1771403 
1771252 
1771240 

XPath表達式從所有(//logentry元件選擇的revision屬性的值文件。

您可以r前綴號碼如下:

svn log -q --xml | xmlstarlet sel -T -t \ 
    -m '//logentry' -v 'concat("r", @revision)' -n 

樣本輸出

r1771403 
r1771252 
r1771240 

xmlstarlet命令串連"r"與文檔中的所有logentry元素revision屬性值。

xmlstarlet不可

您可以訴諸與的grep的幫助下svn log -q輸出略少可靠的解析,如果你不能因爲某些原因安裝xmlstarlet

svn log -q | grep -o '^r[0-9]\+' 

取樣輸出

r1771403 
r1771252 
r1771240 

同樣使用sed的

svn log -q | sed -e '/^[^r]/d; s/^\(r[0-9]\+\).*/\1/' 

第一sed的表達刪除(d)行,如果它不匹配的圖案(如果沒有r在該行的開頭)。第二個表達式將該行替換爲與\(\)之間的模式匹配的部分。

正則表達式在行首(^)後跟一個或多個數字匹配r-o選項指示grep僅打印匹配的部分。