On Mon, Mar 12, 2012 at 05:11:40PM +0000, Simon Dean wrote: > Not having contributed to SVN before, I don't really know how the SVN > client(s) are implemented. How much of the code in the various Windows and > Linux SVN command line clients (e.g. CollabNet's Windows command line client, > SlikSVN's Windows command line client, TortoiseSVN's svn.exe etc) comes from > the codebase that Apache now manage and how much is unique to each client? > > Is it the Subversion API that provides the bulk of their various clients' > functionality? What keeps the command arguments etc. of the various clients > the same? >
The bulk of code comes from Apache Subversion and is shared among client implementations. Clients mostly provide an interface built around the client library provided by Apache Subversion. The command line client is a very minimal wrapper around this library. The GUI clients offer more features, and some ship extra functionality (e.g. TortoiseSVN's revision graph) which is usually implemented on top of the Subversion APIs. SlikSVN and CollabNet's binaries are just a compiled builds of Apache Subversion. I believe they are not even patched in any significant way, if at all. The odd one out is SVNKit, which is a separate implementation of the Subversion client library in JAVA. It is fully compatible, but is not using any Apache Subversion code directly. Clients that use SVNKit are not using the Apache Subversion code base. The JavaHL bindings provide a Java interface to the Apache Subversion code base. JavaHL and SVNKit developers work together to keep their APIs in sync, so that Java-based GUIs like Subclipse or SmartSVN can use either implementation.