On Mar 8, 2009, at 9:39 AM, Chris Anderson wrote: > The second is that you have to think this way if you'll be dealing > with replicated data. If you have edits on dbB and you replicate them > to dbA, dbA only see the edits that dbB would still contain if it were > replicated. It is possible to preserve version history in a distributed system, though. Git, Mercurial, Bazaar etc. all do it. I imagine the same techniques they use could be implemented at the application level in CouchDB, although it seems a bit inelegant to then have two different notions of versioning on top of each other. The "Revlog" structure used by Mercurial for this is quite elegant (it seems to have a lot in common with CouchDB's implementation!) and is nicely explained in this paper [PDF]. —Jens