Yesterday’s Thoughts

February 14, 2005

Using Subversion for File Synchronization

I am experimenting with using Subversion on Linux keep the files on my laptop, desktop and server synchronized. I have been keeping most of my working copies on the server and using Windows sychronization to keep any files I need at all times available. But, I am dissatisfied with Windows synchronization in a couple of ways.

1) Synchronization is slow and doesn’t always happen at a convenient time.
2) The response time in unpredictable. When using a local copy operations can be very quick; when using the copy from the network – especially writing – can be very slow. This isn’t surprising, but I don’t like it.
3) Applications don’t always find the local copy when the network is unavailable. (Does the application call the wrong level of the API?)
4) Some programs cannot use the same preferences when working on a different box. For instance, Emacs saves a list of the files that I am currently using when it exits and reloads these files next time. Obviously the versions of this file that are saved on Windows have paths that are different than those saved on Linux, but even saving on two different Windows boxes causes problems.
5) Windows file synchronization doesn’t work correctly with the vaguries of wireless networking, particularly with Microsoft applications. Example: when editing an Excel doc that is available on and offline, if the network is lost, and then found, it is impossible to save the document.
6) It is limiting to have to change three boxes to move one folder.
7) The are multiple copies of each file saved in various location. On the one hand this is a good backup mechanism, but I would be more comfortable having known backups in known locations.

I have installed Subversion on all three boxes. I am using the Server as the repository and so far using the TortoiseSVN extensions on Windows, although I expect to use the command line interface to script some of this synchronization.

I have tried a couple of setups so far. Currently I am using 5 repositories, more or less parallel to the categories of this blog: Computers, Code, Training, Household and Home (as in ~ or home directory or My Documents). I envision that only the sever will have all of these categories, the others will be selected to different machines depending on use.

I may also use a different repository for iTunes – sharing between multiple servers with iTunes is very awkward, and iTunes doesn’t work well with a share drive. There is no need to keep versioned music files, but this would have the advantage of consistency.

The only problem that I have had so far is security. I am currently using http to synchronize between the various sources because it is available from anywhere, but I wanted to protect some of the files with a password. Somehow the version of Apache that I have has a bug in htpasswd and I can’t create a password file, so I am using Apache directives to block access except from my home. I will probably move this to ssh, but I don’t understand the client ssh configuration.

[Updated 2005-02-16: Some text in point 5) was lost, or maybe I never completed the thought.

Sorry, comments for this entry are closed at this time.