Hi, I'm really interested in knowing more details of commit/update machanism, I've read several times this website http://svn.apache.org/repos/asf/subversion/trunk/notes/subversion-design.html and the information is really interesting but in some steps there is a lack of details or not enough information for my pourporses (I comment them in the end).
The problem is that there is some important information left: **When is the diff made? In the article it is talked about bubbling-up, creating tree, linking not modified nodes, etc... but nothing is said about when the complete content of a file of non-newer revision, is replaced with the diff **What diff is saved: reverse or foreward? I suppose that reverse-diff is saved but, there is also saved the forward one?? (maybe for speeding updates of the clients, for updating a file with the diff and not by downloading the whole file) **Who applies the diff when a not key revision is required? If server is in revision 58, and a client ask for a file of revision 34 (that changed in 45 and 48) Does the server send file in revision 58 and reverse diffs of 48 and 45 (and the client apply as follows 58---reversediff48---->48------reversediff45--->45 == 34 ? Or does the server do that process and send it "ready" to the client ? I'm designing a little CVS system (client in Java and server in PHP) for maximizing the deployability. I will need to face problems of using HTTP protocol and web-hosting limitation (also, PHP is not one of my favourites lenguages) but I'm trying to analize any cvs just for taking ideas. I hope you will keep maintaining such a great Concurrent Versions System as SVN is. Goodbye and thanks in advance, Asier Marzo Pérez Public University of Navarre