I’ve updated SvnFs further to fix RHEL build problems (thanks to Niall Donegan for his help testing the numerous proposed fixes).
Version 0.3 and upwards require version 1.4 or higher of the Subversion development libraries to compile and run. I haven’t yet updated the configure script to check for this, so this is likely the problem if you get compile errors similar to
svnclient.c:48: error: syntax error before ‘*’ token
svnclient.c: In function `_svnclient_list_func’:
svnclient.c:53: error: `path’ undeclared (first use in this function)
svnclient.c:53: error: (Each undeclared identifier is reported only once
svnclient.c:53: error: for each function it appears in.)
svnclient.c:56: error: `dirent’ undeclared (first use in this function)
svnclient.c: In function `svnclient_readdir’:
svnclient.c:81: error: `SVN_DIRENT_KIND’ undeclared (first use in this
svnclient.c:81: error: `SVN_DIRENT_SIZE’ undeclared (first use in this
svnclient.c:102: warning: initialization makes pointer from integer
without a cast
svnclient.c: In function `svnclient_read’:
svnclient.c:134: warning: assignment makes pointer from integer without
make: *** [svnclient.o] Error 1
make: Leaving directory `/root/svnfs/src’
make: *** [all-recursive] Error 1
make: Leaving directory `/root/svnfs’
make: *** [all] Error 2
I’ve decided to work with the latest API, so I won’t be “fixing” these issues to work with older deprecated API functions.
As usual, this release is available from the SvnFs page.
I’ve uploaded the latest version of SvnFs. It’s available from the SvnFs page.
This provides read-only support for Subversion repositories. There are still some issues that need to be ironed out (design issues rather than bugs).
- Doing a recursive list of the repository at mount time is slow
- Reading large files is slow, due to lack of caching
Other than that, from my testing, it works pretty reliably.
I did come across an awkward bug though, which I now can’t reproduce! Basically, between the time I created the Subversion repository for SvnFs and now I’ve switched from en_IE@euro as my locale to en_IE.UTF8. Something in there caused Subversion to get mixed up and incorrectly report the filesize in the svn_dirent_t structure filled by svn_client_list(). This meant that the filesystem thought the files were smaller than they actually were, and was causing short reads. I worked around it by removing and re-adding all the files that were showing incorrect sizes, just for my own testing.
I’m still working, albeit slowly, on SvnFs. I’ve implemented
read() functions, but there are still bugs to be ironed out, so I’m not releasing it yet.
However, I’ve finally gotten around to setting up anonymous access to the code, so the latest development version can be gotten from the Subversion repository with
svn co http://www.jmadden.eu/svnrepos/svnfs/trunk
Testing reports and patches graciously accepted!
The two major bugs to be fixed are:
- Reading large files causes a segmentation fault
- The directory listing of a repository lists files that have been deleted or removed
Once those two are fixed, I think v0.3 should be ready for release, and should offer a complete readonly filesystem of a Subversion repository.
After that, I’ll need to move some code around. Doing a full listing of a Subversion repository at mount time is very slow, and probably not needed – particularly for large repositories. So that will have to change to be more scalable.