【问题标题】:Programmatically pulling different versions of a file from an SVN repository?以编程方式从 SVN 存储库中提取文件的不同版本?
【发布时间】:2013-04-24 18:14:02
【问题描述】:

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

subversion 是否支持允许这样做的协议?如果没有,我可以查看哪些文档来弄清楚如何列出和检索文件的不同版本?

【问题讨论】:

  • SVN 没有自己的脚本语言吗?
  • @HovercraftFullOfEels 我还不知道。我必须更多地研究这个主题。我希望有可能通过 URL 提取文件,但也许那是不可能的。

标签: java svn version-control


【解决方案1】:

您有多种选择:

  • 使用命令行客户端,只需调用正确的命令即可。在大多数编程语言中,都有某种 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 解释了命令行的工作原理。

【讨论】:

  • 使用命令行是个好建议。我不知道脚本语言。我看到 Eclipse 上的颠覆插件使用 SVNKit ?我想我应该稍微练习一下命令行,看看它是如何工作的。
  • SVNKit 不是“脚本语言”,它是一个完整的 Java SVN 客户端 API 实现。
  • SVNKit 是一个纯 Java API。如果您使用 Java,您可以使用 SVNKit.jar 作为您的 Java 程序的一部分来访问您的 Subversion 存储库,就像 Eclipse 一样。 但是,如果你下载了 SVNKit,你会看到几个直接从命令行访问 SVNKit 的 shell 脚本示例。当然,如果你这样做,你还不如直接使用命令行客户端。
猜你喜欢
  • 1970-01-01
  • 2015-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-01
  • 1970-01-01
相关资源
最近更新 更多