...I'm really struck by the idea that it doesn't allow "merge" nodes in its history graph. That seems to make correct merging/replication quite hopeless in common cases? Say you have a data store A, containing revision A1, which you then replicate to create data store B. Then both are modified, so we have:
A contains: A1 -> A2
B contains: A1 -> B2
Now we do a pull from B to A, and "merge". IIUC this creates:
A contains: A1 -> A2 -> A3, A1 -> B2 (deleted)
where A3 contains the modifications made in B2, but this isn't recorded anywhere in the data model.
Then B gets modified some more:
B contains A1 -> B2 -> B3
And now we pull from B to A again. As far as A is concerned, B3 is the child of a deleted revision. What do we do with it? Throw it out? Resurrect the divergence, and eventually merge B3 and A3 "from scratch", ignoring their common history (B2)?
I suppose I should take this to some mailing list...