Hey this looks fun alternative for bittorrent sync!
Can I share code between my local computer and production server in a way that only full syncs are enabled? Partial syncs would break the system and I don’t want that.
This might be really wrong way to do it but it sounded like a good idea for me.
@jpjp Yeah exactly. It would be superb to have ability to download changes into some sort of cache. For example when downloading torrents you can usually specify to move the files to another directory when download is complete. It’s a bit different than this since it would be good to also reflect changes in server back to local computer.
Well I actually have no idea how the internals work at this point but this could be implemented for example with internal git-like version control.
.syncthing (hidden folder)
/version-000002 (version in use)
/version-000003 (changes from remote. MD5 hash of files doesn’t match yet so we know it isn’t fully synced)
When md5 check matches syncthing can checkout changes from version 000003.
And now we would have version control of files as well.
It would open doors to use syncthing in controlled distributed continuous integration of filesystems.
Syncthing does atomic commits per file. There is no concept of a snapshot of an entire repo. I suspect it would be kind of tricky to implement as well; we’d need to know when would a good time to take such a snapshot on the source, and the sync would fail if anything changed on the source while we are still syncing.
You could also create imagefiles of some sort (%timestamp%.iso for example) periodically and put them into your repository. Once the file is on the other side it’s “complete”. In a nx setup it is easy to mount them and they behave just like read only directories, but I am sure one can do some magic on windows as well.
That saves you the trouble of checking whether syncthing is in sync, shutting it down, etc.