2009-01-05 35 views
2

我怎樣才能在一個分支,其中,輸出是XML格式的單個文件,包括修訂,日期,作者,文件名&路徑上的所有非二進制文件完全遞歸SVN追溯報告,並在文本文件本身的行?整個輸出需要在一個文件中。它將通過CCNet實例作爲構建的一部分執行。如何在一個XML文件中爲分支中的所有非二進制文件獲取遞歸svn責備報告?

可用的工具是惡性和nantcontrib,MSBuild的和最新的命令行SVN的最新的穩定版本。

下面是我遇到的一些問題:命令行svn blame命令不支持目錄遞歸。 Blame的--xml選項不包括每行的實際文本,儘管它包含了其他所有內容。默認情況下,nantcontrib傳遞--quiet參數(與任務引用相反),blame命令不支持該參數。 Nantcontrib svn任務可能不接受--xml參數。

回答

2

簡單的答案是沒有任何簡單的方法來做到這一點。最好,最正確的方法是編寫你自己的svn客戶端(或擴展現有客戶端),以便它具有你需要的功能。幾乎無足輕重。

還有一個錯誤的方法來做到這一點,這也涉及到編寫代碼。 不這樣做

 
find . -type f | grep -v .svn | xargs svn blame > line_data 
 
find . -type f | grep -v .svn | xargs svn --xml blame > xml_data 

你可以腳本生成的兩個svn命令在一起,以避免運行find兩次,但是這仍然是速度奇慢。爲了增加傷害,您必須自己解析這兩個文件,才能將實際的源代碼行添加到xml數據中。不幸的是,我認爲這是對你想要的標準svn客戶端的支持程度,我找不到任何其他客戶端做得更好(有些甚至不支持blame)。

1

我不知道你在用什麼操作系統。但你可以嘗試使用一個簡單的FOR循環和命令「svn ls -R」來遞歸地列出你的分支(工作區/ url)中的所有文件,然後將其管道化爲「svn blame --xml」。

我已經在我的SVN命令行提示符下試過了,它工作正常(Windows XP,SVN 1.4.4)。我使用的命令如下:

FOR/F 「有usebackq delims ==」 %i的(svn ls -R http://myurl/mybranch)DO @svn怪--xml%我

注意:您可避免未發現一些「網址「如果您在工作區中鍵入此命令(反映您的分支根目錄)並在上述命令中使用」svn ls -R「而不是url,則會出現」錯誤類型「。

希望這會有所幫助。

+0

線路信息不包含這種方式。不過謝謝。 – 2009-01-21 02:46:59

相關問題