I&#x27;m not sure it is universally possible, because you never know where somebody might branch from.<p>I think checkpointing only can be effectively done with reliable consistency when you know everybody are onboard and stick to the same shared checkpoints, in your <i>shared past</i> (checkpoints you know they know), because otherwise they might themselves not know any checkpoint identical to one of yours when you&#x27;ll merge.<p>It&#x27;s bad in particular when you&#x27;re merging files that your algorithm only can parse as bit strings, not data structures, as the entire structure can have been very drastically changed with no clear indication of what went where. If there&#x27;s known structures in common, at least you can attempt some kind of logical reasoning.<p>Somebody forking in the middle of a full rewrite with no existing checkpoints that&#x27;s coming back to a document now with a checkpoint before and after it would then have to have a history going back to the older checkpoint (the exact same version!), merge backwards, and merge then against the diffs to the new checkpoint, and forwards to the current version.<p>If your most similar stored versions (with diff history) of the same document in your separate histories are far apart, it WILL be painful to merge.