Implement Sync
On top of the jobs introduced to talk to a remote server, a sync mechanism shall be added. In the first iteration, the sync shall be implemented in a "Server Wins" fashion, i.e. when a conflict is detected (e.g. both local and remote changes) the remote changes will be downloaded and local ones be discarded. However, the design of the sync shall allow to also use other models in the future.
In order to implement the sync, a persistent local storage will be required which holds file modification times and the remote "sync properties" (for now, etags). Storing of this information shall also be made configurable (i.e. by providing an abstract base class or interface, which the user can implement or opt to decide to use a built in solution).
Edited by Martin Hoeher