C# wrapper around Subversion based on SharpSvn
We have been using the wonderful SharpSvn library to do communication between our software and Subversion (SVN) servers for quite a while.
Unfortunately, SharpSvn comes short in fulfilling the following requirements:
-
SharpSvn has not been updated for quite a while. More specifically, Subversion 1.9 is the latest version SharpSvn supports, and it's not supported anymore.
-
SharpSvn also statically links SVN library, which means we don't even get most patches.
-
SharpSvn is not compatible with .NET Core, meaning it would be hard for us to go forward with new versions of .NET.
-
SharpSvn is written in C++/CLI, which means it is only compatible with Windows, while we provide some tools that work cross-platform (e.g. mxbuild).
To cover those shortcomings, we decided to rebuild SharpSvn using a different approach.
We decided to give a new name to this library because we don't want to shadow the original SharpSvn library, as we don't plan to reimplement it in full.
We implemented LibSvnSharp as a port of SharpSvn to managed code. Because of that, you will see a lot of mentions of SharpSvn in the code.
We use CppSharp project to generate bindings for native Subversion library APIs, and then we take SharpSvn code and rewrite it in C#. Simple! :)
This allows us to build Subversion separately from LibSvnSharp, so to update it to a newer version would mean to simply build a newer version of the native library. Because of this approach, we need to redistribute both the managed DLL and the native one.
This project is still a work in progress. We are far from done yet, and we don't plan to port all the APIs of the original SharpSvn library.
We would like to have the following:
-
Finish what has been started (exceptions, long file paths etc.)
-
Build scripts (for now Windows-only)
-
Adopt some of the tests from original SharpSvn library to test LibSvnSharp
This document is a work in progress and will be posted separately in this repository.