You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Asier Marzo Pérez <as...@unavarra.es> on 2010/05/02 21:44:32 UTC

More details of commit/update steps

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

Re: More details of commit/update steps

Posted by Stefan Sperling <st...@elego.de>.
On Sun, May 02, 2010 at 11:44:32PM +0200, Asier Marzo Pérez wrote:
> 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? 
> **What diff is saved: reverse or foreward?
> **Who applies the diff when a not key revision is required?

This may give you a better idea of how it works:
http://www.red-bean.com/kfogel/beautiful-code/bc-chapter-02.html
It describes the interface used by Subversion to transmit
changes between server and client.

We're in the process of redesigning it:
http://svn.apache.org/repos/asf/subversion/trunk/notes/editor-v2.txt
but the current implementation is still using the old version.

If you need more details reading header files in
http://svn.apache.org/repos/asf/subversion/trunk/include/
as well as the source code itself will give you even more information.
See also http://subversion.apache.org/docs/community-guide/general.html#code-to-read

> 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

The bubble-up happens in the repository, it is server-side only.
 
> I hope you will keep maintaining such a great Concurrent Versions System as SVN is.

Heh :)
We like to think of SVN as the successor of CVS, not a variant of CVS.
But I guess you mean "version control system", which is one of the most
general names for software such as CVS and SVN?

Cheers,
Stefan

Re: More details of commit/update steps

Posted by Stefan Sperling <st...@elego.de>.
On Sun, May 02, 2010 at 11:44:32PM +0200, Asier Marzo Pérez wrote:
> 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? 
> **What diff is saved: reverse or foreward?
> **Who applies the diff when a not key revision is required?

This may give you a better idea of how it works:
http://www.red-bean.com/kfogel/beautiful-code/bc-chapter-02.html
It describes the interface used by Subversion to transmit
changes between server and client.

We're in the process of redesigning it:
http://svn.apache.org/repos/asf/subversion/trunk/notes/editor-v2.txt
but the current implementation is still using the old version.

If you need more details reading header files in
http://svn.apache.org/repos/asf/subversion/trunk/include/
as well as the source code itself will give you even more information.
See also http://subversion.apache.org/docs/community-guide/general.html#code-to-read

> 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

The bubble-up happens in the repository, it is server-side only.
 
> I hope you will keep maintaining such a great Concurrent Versions System as SVN is.

Heh :)
We like to think of SVN as the successor of CVS, not a variant of CVS.
But I guess you mean "version control system", which is one of the most
general names for software such as CVS and SVN?

Cheers,
Stefan