Since I got my laptop I've been fumbling with the idea of having some kind of checkout/checkin system for files on my “fixed” systems (desktop machine and server) to my laptop.
My laptop only has a small hard disk (6GB) so I don't want the data mirrored, but if I'm going to be away from my main systems for a while I generally want to have some portion of my filesystem on the laptop. What I want, then, is to “check out” files and directories to my laptop, and set them read-only on the fixed system until they are checked back in or explicitly unlocked (in the case where the checked out copy is now junk, or missing). I also want the alternative of checking out files read-only, in which case they remain read/write on the main system and are read-only on the laptop.
This way there's only one “most recent copy” of each file, and I avoid a situtation (which has arisen before) where I edited some source code on my laptop while I was out, then later found it on my main system and wondered where my changes went (forgetting I'd done it on my laptop) and re-implemented them a little differently and went on working, only to later discover the “parallel universe” version on my laptop, notice that version was better and have to hack the newer one to include the stuff from the “fork”.
The other thing I'd like to do if I can make it happen is to have the filesystem on the laptop look the same as when it's on the LAN and has the filesystems off the other machines mounted directly; I want the directories/files to appear but not be readable/writable unless they were checked out, just so that I remain concious of the layout of the filesystem and don't have to change my routine when I'm away (using the temporary mirror directory, with a different path, instead of the mounted network directory) and so that MRU lists in apps work, etc.
I'm not really sure how best to go about this, though, especially since I now have two systems to worry about. When I originally came up with this, I didn't have my file/dev server so I was just mirroring bits of the filesystem on my desktop system in a directory on my laptop and trying to remember to resync it later. I don't know much about this stuff, but I suspect the only way to do this completely transparently would be to write a filesystem-type driver which sits between userspace and the real underlying driver and communicates with userspace apps to do the checkin/checkout and keep the cached directory/file layout in sync. Not really something I'm currently qualified to write, sadly. :(