Solution:
Pretty much any version control system will do what you want, other than the “automatic sync” component…typically, you will have to manually run something like git pull
or svn update
in your working copy in order to bring it up-to-date.
Either Subversion or Git will let you have multiple working copies — so, one on your Mac, one on our PC, one on the remote server — and you can update any one of these, which I think meets your requirement (b).
Both systems — indeed, any version control system — will let you revert back to a previous state. That’s why we do version control.
Both systems provide a mechanism for “exporting” the current state of the repository (e.g., git archive
or svn export
). So that’s (d).
You may want to investigate Sparkleshare, which is a Dropbox clone that uses Git as it’s backing store. If you run Sparkleshare on your Mac and PC and do your development in this folder, then you get automatic synchronization.
You could also simply put your working copy inside your Dropbox folder, if you’re already using Dropbox.