You have almost made me a happy man !
But unfortunately this will not work for any other repos except git.
Would there be any chance that you might be able to get this to work on other repositories or perhaps with a strictly file system.
I am using mercurial, but a simple file system might be more beneficial.
I wasn't thinking about using other version controls with dploy, but it shouldn't be really hard to implement. Because from git I am only using some basic commands to get the difference between your commit history.
Someone sent me today another library called grunt-ftpush, where they use a simple file list comparison to track the files.
I will give it a try with svn and mercurial, but if anyone wants to give it a try would be awesome.
File comparison will be great, it's the only feature that I miss from WinSCP
I've been using the modified time comparison with phing (as described here), saving latest deployment timestamp locally.
This works pretty well, unless you edit files directly on server.
And you can't use .gitignore files :(
I have wrote a shell script that will handle this.
It will upload any file that you have from any folvers. You can set excludes of the files that you do not want. It will track the history of folders and files with a timestamp so if anything changes it will be re-uploaded.
It does work, but some improvements could always be done on it.