调用已安装的TortoiseSVN版本以编程方式使用SVN库

时间:2010-08-30 22:00:24

标签: c# svn tortoisesvn

我正在编写一个自动执行某些SVN进程的实用程序。将部署此实用程序以安装TortoiseSVN的所有计算机 - 但是,它们可能不是相同的版本。据我所知,TortoiseSVN静态链接到特定版本的SVN库,并且经常升级。

我想避免的是我的实用程序创建更新的结帐与TortoiseSVN不兼容。我最初的想法是使用TortoiseSVN命令行参数来调用对话框,但它们都需要用户输入。我宁愿这一切都是自动的,并且SVN命令的输出被发送到stdout。

有没有办法可以直接访问TortoiseSVN内部使用的SVN库?或者SVN签出保证在次要版本差异之间是否(向前和向后)兼容?升级SVN二进制文件我的实用程序使用每个主要版本的SVN不会是一个太大的问题。我只是不想强制每个用户都使用特定版本的TortoiseSVN。

对于那些建议我使用命令行工具进行SVN的人:

客户端可能没有安装SVN命令行二进制文件 - 即使它们这样做,TortoiseSVN链接的版本与命令行二进制文件链接的版本之间也会存在差异 - 这可能导致无法比较。

4 个答案:

答案 0 :(得分:2)

您可以使用sharpsvn api直接访问svn服务器。

它的xcopy可以部署并与其他svn或tortoisesvn二进制文件隔离。

答案 1 :(得分:1)

我习惯于使用TortoiseSVN的设置以及一些依赖单独的svn命令行客户端的脚本。

一般来说,我们没有问题。

主要兼容性问题是工作副本格式是否发生变化。 这发生在svn 1.5和1.6之间。

svn 1.5客户端无法使用1.6结帐。

请参阅: http://subversion.apache.org/docs/release-notes/1.6.html

在过去的项目中,我还使用了TortoiseProc命令行工具 - 请注意,如果没有错误发生,可以通过删除用户交互的方式调用它,请参阅http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-automation.html中的/ closeonend

我不相信有任何方法可以访问Tortoise二进制文件中的基本svn客户端代码。

答案 2 :(得分:0)

我已经尝试了几次,某些版本的SVN代码之间的差异有时很大。我的猜测是你必须指定你的代码只与某些SVN版本兼容。

如果您的应用程序需求很简单,您可以执行命令行指令吗?

另一种选择是尝试编写代码来读取SVN版本,然后处理代码中的差异。那将是一场噩梦噩梦。

答案 3 :(得分:0)

TortoiseSVN安装有名为TortoiseProc.exe的命令行工具。请参阅TortoiseSVN帮助手册中的“附录D.自动化TortoiseSVN”主题(也包含在TortoiseSVN安装中)。