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
Before deletion, vdirsyncer will now check if the item changed on the
other side, and induce a re-upload if the item did change.
Because of this behavior it is now possible to remove the special-casing
if no status is available.
Fix#128
- Fix#49 -- The old fix caused problems with other servers. The new
behavior only decodes ``@`` characters.
- ``@`` is now not used when generating a new href, as some servers seem
to have problems with it (http://sabre.io/dav/character-encoding/).
This behavior is configurable via the ``unsafe_href_chars`` parameters
for DAV storages, and is disabled in the testsuite for Radicale and
ownCloud.
- Decoding of hrefs is also done twice for CarddavStorage.list because
of owncloud/contacts#581. Vdirsyncer has behaved like that before, but
not intentionally.
- Storages now don't share their ``_get_href`` methods anymore.