2013-04-11 103 views
0

我在C#中編寫了一個小型控制檯工具,它需要知道SVN工作副本目錄的修訂版號以處理其他具有此編號的數據。通過直接讀取所有.svn目錄中的條目文件,我已經支持SVN 1.4至1.6。但是SVN 1.7已經改變了使用一個帶有SQLite數據庫的.svn目錄。確定C#中的SVN工作副本修訂版#

確定工作目錄版本號的最佳方法是什麼?

我剛剛嘗試過使用SharpSVN,但它很大程度上沒有記錄,我無法弄清楚如何使用它。這對於5 MB和可能的幾個DLL也是非常大的。

我找不到可自由下載的簡單SVN命令行客戶端。另外,上次我見過一個,它很龐大,包含許多不完全便攜的文件。 (如果我的工具只能作爲一個單獨的.exe文件來使用,那就太好了。)

另一個選擇是使用SQLite庫(作爲單獨的DLL提供)並自己挖掘數據庫。我已經對此進行了基礎研究,但我不確定如何檢測未提交的修改。

TortoiseSVN很可能已經安裝在將要使用我的工具的計算機上,因此它無法使用,因爲它包含了單個GUI應用程序中的所有內容,沒有我可以重複使用的DLL。

+0

檢查頁面中的命令行工具:http://www.visualsvn.com/downloads/ – bahrep 2013-04-11 13:57:32

回答

1

如果您不想使用SharpSVN並使用工作副本,那麼99%的主機可能具有SVN CLI工具。

的檢查可召集svnversion並調用它svnversion <PATH-TO-WC>,攔截輸出

+0

直到今天,我單獨使用了TortoiseSVN和Ankh,並且在我的計算機上沒有SVN CLI。但是我注意到有一個設置選項可以包含TortoiseSVN 1.7的CLI二進制文件,所以我可以堅持使用它,並從那裏使用CLI。這將是一個簡單的安裝過程。所以你們兩個建議使用外部CLI工具是最好的方法,對吧? – ygoe 2013-04-11 19:25:10

+0

@LonelyPixel - 不是最好的,從我的POV(外部依賴,你不能解決),但最簡單的 – 2013-04-11 20:17:43

1

我用龜SVN的所謂「SubWCRev的命令行工具,用於這一目的(http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-subwcrev.html)。它允許確定最新的修訂版本,提交日期等......這個解決方案的缺點是這個工具可以處理文件,所以你需要定義模板文件和解析工具的輸出文件。這雖然對我有好處。

+1

沒有模板和目標文件SubWCRev輸出到標準輸出 – 2013-04-12 12:40:35

+0

這是很好的提示 – 2013-04-15 07:31:12