Fix#127
More options of conflict resolution are discussed there, but they all
require extra dependencies. This new API allows the user to plug in
third-party scripts to do those.
- Using `info.idents` as new status, this saves a few operations where
no storage actions have to be taken, but the status has to be updated.
- Rename StorageSyncer to _StorageInfo and make it a private API again.
- Ability to pass custom functions for conflict resolution. This part is
a preparation for #127.
The implementation of #476 is problematic as it returns None.
`vdirsyncer.sync` has internal assertions that this is a string, which
is why we get a crash like this:
error: Unknown error occured for cal/markus@unterwaditzer.net:
error: Use `-vdebug` to see the full traceback.
debug: File "/home/untitaker/projects/vdirsyncer/vdirsyncer/cli/tasks.py", line 66, in sync_collection
debug: force_delete=force_delete
debug: File "/home/untitaker/projects/vdirsyncer/vdirsyncer/sync.py", line 228, in sync
debug: action(a_info, b_info, conflict_resolution)
debug: File "/home/untitaker/projects/vdirsyncer/vdirsyncer/sync.py", line 276, in inner
debug: assert isinstance(dest_etag, (bytes, text_type))
Discovered in #467
Currently, `find_dav` only resolves a single redirect. When using
Baïkal behind a proxy with HTTPS, this becomes an issue:
1. dav.example.com/.well-known/caldav (Apache rewrite to http)
2. dav.example.com/dav.php (http)
3. dav.example.com/dav.php (https)
The Apache configuration is provided by Baïkal, hence it is also
possible to fix it server-side:
-RewriteRule /.well-known/carddav /dav.php [R,L]
+RewriteRule /.well-known/carddav https://dav.example.com/dav.php [R,L]
-RewriteRule /.well-known/caldav /dav.php [R,L]
+RewriteRule /.well-known/caldav https://dav.example.com/dav.php [R,L]