Python – Does PySVN need Subversion installed

pysvnpythonsvnubuntu-9.04windows

I have python script that uses pysvn and checks out or updates a local copy obtained also from a local repo.

client.checkout(url, 
path,
revision=pysvn.Revision(pysvn.opt_revision_kind.number, RevNumber),
ignore_externals=False)

I am running this on a windows machine in which I haven't installed subversion. The svnsync used to obtain a copy of an actual repo was done on another machine.
With this, I assumed that PySVN doesn't need SVN installed to be able to checkout or update from a folder that contains the result of svnsync.

Problems start when In Windows some repos have files with lowercase and mixedcase versions. Windows will give an error when updating or creating two files with different case, so I jumped into Ubuntu to run my script.

In Ubuntu, I get this error running my script with 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'

After some searching, this seems to be an error message related to svn 1.6 but pysvn supposedly supports that and sudo apt-get install python-svn tells me I have the latest version…

So, is this because of SVN or pySVN? If the windows pysvn doesn't complain about it, why does the Ubuntu one do? Or is it tied to having svn on the machine or not?

Figuring this one out will help me towards answering a previous post of mine essentially on the same topic

Best Answer

This is because your Ubuntu is accessing the repo with too old a version of the SVN API.

The windows one is fine because it is obviously using a newer version.

According the PySVN download page:

Windows binary kits

Note: These windows kits are all you need. It is not necessary to install any Subversion kits.

and

Mac OS X binary kits

Note: These Mac OS X kits are all you need. It is not necessary to install any Subversion kits.

but, come

Linux binary kits

it doesn't mention anything about NOT needing Subversion. My guess is the PySVN linux needs subversion and hence is only using 1.5.x

In addition to this, it only says

built against Subversion 1.5.6 and Subversion 1.6.5

for Windows and Mac OSX, not for Linux

You will need to install an SVN Client on Ubuntu that supports the newer repo format. Obviously you could wait until the Nix version of PySVN is updated, or find another SVN tool...