Looking for a tool to automatically two-way sync SFTP with local folder

data synchronizationdevelopmentfile-transferftpsftp

I use OS X for development and I want to push changes to dev server on every ⌘+S.
When I check out a different branch, I want the local folder to update accordingly.

So I figured I need an automatic, two-way sync solution.

My editor of choice is Sublime Text (which is awesome, you totally should check it out).
I began my quest with Sublime Text SFTP plugin by Will Bond but found it unstable and slow.

Then I attacked the problem with Panic Transmit.
It is stunningly beautiful. However, it didn't help me either.

Transmit offers two options:

  • two-way sync between local and remote folder;
  • mount SFTP to the filesystem.

Alas, its two-way sync is manual and has to be invoked by pressing a button.
(I could probably get around this by writing some clever AppleScript—but I don't know it.)

SFTP mounting is great—unfortunately, it has major disadvantages: file searching is predictably slow and there seems to be no way to tell Transmit that files have changed on server. You need to unmount and mount again to see the remote changes. This makes branches impossible to work with.

I'm really confused now and I don't feel like wasting a couple of hours on a wrong solution. I'm open to suggestions for a tool to improve my workflow.

Here's what I found so far. I'm not sure any of those can actually watch remote folder for changes.

Note that I'm looking for a solution that works out of the box. I don't want a tool that can't handle new/changed/deleted files or folders without fiddling with its source code.

Best Answer

Old question, but here's my answer:

I use a Unix tool called Unison. This is a command-line tool that allows for two way sync.

The good is that it's highly configurable: ignore certain file names, directories, synchronize multiple folders, which side wins in a conflict, many other things.

The bad is that you have to not be scared of the command line and both the server and the client have to have Unison installed; both installations need to be the same version and built with the same version of OCAML.

But I've been using it multiple times an hour every work day for the past year and it's been awesome -- it's really fast, really easy to fire off from the command line.