Svn client/server versions

svnversion control

If I understand correctly version of subversion defines:

  • A structure repository on server
  • A structure of working copy on client side
  • API between client and server

Once we've install svn server, we don't touch/upgrade it.

Things are more complex on client side.

On client side (Windows) we currently use tortoisesvn. It's version (correct me if I'm wrong) is corresponding to subversion version.

Now, we're going port our application to Linux and therefore we consider using additional svn clients (svn command line utility, Eclipse plugin and some GUI frontend).

Now the questions:

  1. Is it possible several different clients will work on the same checkout code?
    If yes thus it means that I need carrefully pick up version of clients to be used,
    since each client expects a particular format/data be found in .svn directory?

  2. What is the relationship between version of server and client side?
    If for example server side is 1.4 and client is 1.6, thus it means that some 1.6
    features won't work?

  3. Is it true that version of subversion client is not nessessary corresponding to the version of subverions, such as of rapidsvn as opposed to tortoisesvn?

Best Answer

I would strongly not recommend that you try to use different Subversion clients against the same checkout directory, especially if those are running on different platforms (ie. across a network). Subversion does platform-specific things with line endings on text files, and if you check out on Windows and then check in the same working copy with Linux (for example), you may accidentally touch every line of every file by adding spurious CRLF line endings.

If you are doing cross-platform development, set up a different checkout directory on each platform where you're doing development. If you must share changes before checking in, consider using Git and the git-svn gateway.