2013-04-30 72 views
0

我想能夠拉取不同版本的文件。以編程方式從SVN存儲庫中提取不同版本的文件?

Subversion是否支持允許這樣的協議?如果不是,我可以查看哪些文檔以瞭解如何列出和檢索文件的不同版本?

+0

SVN是否有自己的腳本語言? – 2013-04-30 18:25:06

+0

@HovercraftFullOfEels我還不知道。我必須更多地研究這個問題。我希望有可能通過URL來提取文件,但也許這是不可能的。 – 2013-04-30 22:14:29

回答

2

您有幾種選擇:

  • 使用命令行客戶端,只需要調用正確的命令。在大多數編程語言中,有一些系統命令允許您執行此操作。在Windows Batch或BASH等腳本語言中,您可以直接從程序直接運行命令行客戶端。
  • 使用C API
  • 使用另一個充當API封裝的實現,或者模擬API(如SVNKit)。

你沒有提到你的語言腳本英寸大多數語言都有自己的Subversion界面。 Java可以使用SVNkitJavaHL。 C可以直接使用C API。 C#有SVN.net。 Python有Pysvn。 Perl有SVN::Client

下面是如何通過在Unix/Linux操作系統/ Mac上的標準的命令行獲取文件的特定版本:

$ svn cat -r$SVN_REVISION $URL_TO_FILE_NAME > $FILE_NAME 

svn cat命令打印出你想要的文件。 -r指定Subversion版本(否則,將使用HEAD - 該分支上的最新版本)。

請記住,如果您要根據標記提取文件,則不需要參數-r,因爲該URL包含所需的標記。拉起基於標籤的文件:

$ svn cat $SERVER_URL/tags/$TAG_NAME/$PATH_TO_FILE > $FILE_NAME 

客戶端程序稱爲svnsvn help會給你所有的各種子命令。另外,online Subversion Manual解釋了命令行的工作方式。

+0

使用命令行是一個很好的建議。我不知道腳本語言。我看到Eclipse上的Subversion插件使用SVNKit?我想我應該用命令行練習一下,看看它是如何工作的。 – 2013-04-30 22:17:11

+0

SVNKit不是一種「腳本語言」,它是Java中完整的SVN客戶端API實現。 – alroc 2013-05-01 01:25:28

+0

SVNKit是一個純Java API。如果你使用的是Java,你可以使用SVNKit.jar作爲你的Java程序的一部分來訪問你的Subversion版本庫,就像Eclipse一樣。 ***不管***,如果你下載SVNKit,你會看到幾個shell腳本的例子,從命令行直接訪問SVNKit。當然,如果你這樣做,你也可以使用命令行客戶端本身。 – 2013-05-01 13:43:47

相關問題