PySVN是否需要安装Subversion?

1 投票
1 回答
4532 浏览
提问于 2025-04-15 18:52

我有一个用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 个回答

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工具来用...

撰写回答