PySVN是否需要安装Subversion?
我有一个用Python写的脚本,它使用pysvn来从本地仓库检出或更新一个本地副本。
client.checkout(url,
path,
revision=pysvn.Revision(pysvn.opt_revision_kind.number, RevNumber),
ignore_externals=False)
我在一台没有安装Subversion的Windows机器上运行这个脚本。获取实际仓库副本的svnsync是在另一台机器上完成的。基于这个,我以为PySVN不需要安装SVN就能从包含svnsync结果的文件夹中检出或更新。
问题出现在Windows上,因为有些仓库里的文件有小写和混合大小写的版本。Windows在更新或创建两个不同大小写的文件时会报错,所以我转到Ubuntu上运行我的脚本。
在Ubuntu上,我运行pysvn脚本时遇到了这个错误:
pysvn._pysvn_2_6.ClientError: Unable to open an ra_local session to URL
Unable to open repository xxxx
Expected FS format between '1' and '3'; found '4'
经过一些搜索,这似乎是一个与svn 1.6相关的错误信息,但pysvn应该是支持这个版本的,而我用sudo apt-get install python-svn
命令安装的却是最新版本……
那么,这个问题是因为SVN还是pySVN呢?如果Windows上的pysvn没有报错,为什么Ubuntu上的会报错?或者说,这和机器上有没有安装svn有关吗?
弄清楚这个问题将有助于我回答一个之前的帖子,基本上也是关于同样的话题。
1 个回答
这是因为你的Ubuntu系统使用的SVN API版本太旧了,导致无法正常访问仓库。
而Windows系统就没问题,因为它显然使用的是更新的版本。
根据PySVN下载页面的信息:
Windows二进制包
注意:这些Windows包就是你所需要的。无需安装任何Subversion包。
还有
Mac OS X二进制包
注意:这些Mac OS X包就是你所需要的。无需安装任何Subversion包。
但是,对于
Linux二进制包
它没有提到不需要Subversion。我猜PySVN在Linux上需要Subversion,所以它只支持1.5.x版本。
此外,它只提到
是基于Subversion 1.5.6和Subversion 1.6.5构建的
这适用于Windows和Mac OSX,但没有提到Linux。
你需要在Ubuntu上安装一个支持新仓库格式的SVN客户端。显然,你可以等到PySVN的Linux版本更新,或者找其他的SVN工具来用...