以编程方式从SVN存储库中提取不同版本的文件?

时间:2013-04-30 18:17:15

标签: java svn version-control

我希望能够提取不同版本的文件。

subversion是否支持允许此操作的协议?如果没有,我可以查看哪些文档来确定如何列出和检索文件的不同版本?

1 个答案:

答案 0 :(得分:2)

您有多种选择:

  • 使用命令行客户端,只需调用正确的命令即可。在大多数编程语言中,有一些 system 命令允许您执行此操作。在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解释了命令行的工作原理。