Until quite recently I worked on two computers, which presented me with some issues. IMAP solved my mail problems, my own WebSticky software solved the browser bookmarks problem, but address book synchronisation remains an issue, as Mozilla Thunderbird can read, but not write to LDAP servers.
All the issues just mentioned were minor ones, especially compared with that of managing files. I have tried various options, all of which have their own issues.
When I first started working between two machines, I simply created an NFS share of my home directory on my desktop machine, mounting it on my laptop. This had two problems:
- I could not execute files on the remotely mounted directory, requiring an SSH session as well.
- The NFS server (as should be) was only accessible from my LAN. If I took my laptop elsewhere, no access.
For a while, I used to rsync files between the two machines. Two-way synchronisation, however, is very tricky to manage, especially for someone with a poor memory.
Subversion seemed a perfect solution. Not only could I check out my home directory onto any machine, but I gained version control of all files and also distributed backups.
This is all well and good, provided that files are either managed manually, or all software that might create/delete/move files is Subversion-aware. I realised that this was all going wrong shortly after I did some re-arrangement of my IMAP directories in Thunderbird. When I went to commit my changes, I realised that I had, through the offices of Thunderbird, added, deleted and moved several files and directories, without telling Subversion that I had done so. I then had to spend a laborious half-hour or so deleting the missing files committing the changes, adding the new ones, committing those changes – what could be said to be a lot of bother.
Picasa has given me similar problems, as had Konqueror, when I decided to use a graphical tool to clear out unwanted files in my temporary directory rather than doing them by hand (svn delete xxxx).
Subversion was so nearly the solution that I needed, but until all software is written to talk to some sort of file system abstraction layer API (something that would either talk raw files, Subversion, CVS, etc) rather than straight to the file system, I will still have problems. Only NetBeans helps me here, as it can work directly with a Subversion repository.
I don’t know if there is a solution. I appreciate that what I am trying to do isn’t really what Subversion was designed for. I may have to go back a step and create a new file hierarchy in my home directory, files that can be version controlled, and those that cannot. The non-controlled files will just have to go back to being backed up by rsync; now that I am no longer working on two machines, this may not be so much as an issue. (I now work with a desktop-replacement laptop and the desktop machine is now a server and nothing but.)
These little things are sent to try us.