I've set up a cheap PC under Fedore Core 4 that's a beaut little workhorse. It's running NetAtalk 2.0.2 which means a reliable and quick Fileserver for the macs to connect to.
What I've done is to create a share called 'Websites' on that Linux box, and inside that are a whole heap of client folders. E.g.:-
client 1 ->
www.client1.dev -> httpdocs
client 2 ->
www.client2.dev -> httpdocs
...etc...
So it means that any user can log in and work on those sites simply by mounting the 'Websites' share. Because those files are being worked on directly, there's no need for synching. Of course, the only thing to watch out for is multiple people working on the same site, but a little old fashioned talking can resolve that one.
Then I've set up BIND on that box and created a whole heap of '.dev' domains that all point back to the same box. All the virtual hosts I have on this box perfectly replicate my live server except for the '.dev' domain so I can be pretty sure that things will run smoothly once I upload.
I used to simply SFTP from my Linux box to my live box when I was ready to go live but there were occassional wrinkles that meant 0 byte files were overwriting my files (extremely rare, but it did happen nonetheless). So I set up all my sites using
Subversion, and then all I do is SSH into my live box, and perform a SVN export from the test box - it works a whole heap more reliably, and I can also have it tunnel through SSL for safety.