I've been unsatisfied with git-annex's handling of clock skew since day 1. Since it relies on timestamps, it needs clocks to be synchronised across users, at least to a reasonable extent. A clock in the far future or distant past could potentially confuse git-annex a lot. Vector clocks felt like the right kind of solution, but also wrong somehow.

I've finally cracked it! See git-annex branch clocks for the details, but in summary, git-annex will be able to detect clock skew and fall back to vector clocks, but will otherwise continue to use timestamps for their benefits over vector clocks (ie, having some idea about what order disconnected events actually occurred, to the extent physics makes that possible).

That is mostly implemented, only needs some more testing and cleanup before merging.


Today's work was sponsored by Graham Spencer on Patreon