我正在编写一个自动执行某些SVN进程的实用程序。将部署此实用程序以安装TortoiseSVN的所有计算机 - 但是,它们可能不是相同的版本。据我所知,TortoiseSVN静态链接到特定版本的SVN库,并且经常升级。
我想避免的是我的实用程序创建和更新的结帐与TortoiseSVN不兼容。我最初的想法是使用TortoiseSVN命令行参数来调用对话框,但它们都需要用户输入。我宁愿这一切都是自动的,并且SVN命令的输出被发送到stdout。
有没有办法可以直接访问TortoiseSVN内部使用的SVN库?或者SVN签出保证在次要版本差异之间是否(向前和向后)兼容?升级SVN二进制文件我的实用程序使用每个主要版本的SVN不会是一个太大的问题。我只是不想强制每个用户都使用特定版本的TortoiseSVN。
对于那些建议我使用命令行工具进行SVN的人:
客户端可能没有安装SVN命令行二进制文件 - 即使它们这样做,TortoiseSVN链接的版本与命令行二进制文件链接的版本之间也会存在差异 - 这可能导致无法比较。
答案 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安装中)。