Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 27 Jan 2013 13:49:08 +0100
From:      Arrigo Marchiori <ardovm@yahoo.it>
To:        freebsd-stable@freebsd.org
Subject:   Re: Svnsup architecture
Message-ID:  <20130127124908.GB18833@snail.casa>
In-Reply-To: <web-11528588@mailback4.g2host.com>
References:  <20130123144050.GG51786@e-Gitt.NET> <20130124093846.5e683474@laptop> <E10EBB96DCC143BE8F14FD2982AD84B7@white> <20130124085717.GA26673@icarus.home.lan> <20130125124219.GA5299@snail.casa> <web-11528588@mailback4.g2host.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Disclaimer: I am trying to go inside the technicalities of the SVN
protocol. I am not sure whether this sub-thread should belong to this
list or to another; I am open to suggestions on this topic.

On Fri, Jan 25, 2013 at 07:40:45PM -0600, John Mehr wrote:

> On Fri, 25 Jan 2013 13:42:19 +0100 Arrigo Marchiori <ardovm@yahoo.it> wrote:
> > On Thu, Jan 24, 2013 at 12:57:17AM -0800, 'Jeremy 
> > 
> > 1- svnsup-distill: takes a revision from svn and creates 
> > a text file (called a delta) that represents it. It seems to be 
> > almost complete.
> 
> > To answer one of John Mehr's problems: MD5 sums are calculated by
> > svnsup-distill and included in the deltas. The client only needs
> > to check them against the local files.
> 
> Hello,
> 
> I've been looking for a way to get the details of a 
> complete revision in one step, but I haven't had any luck 
> yet. This would solve the one aspect I'm most worried 
> about: with 50000+ files and 5500+ directories in my local 
> copy of /usr/src, I'd hate to have my code end up 
> inadvertently causing a denial of service on the 
> repositories with a flood of tiny requests...

After investigating more in depth the SVN protocol, if I understood
correctly, your problem cannot be solved. Or, at least, the server is
not supposed to help us.

The SVN client, in fact, seems to save a copy of the whole working
copy inside the .svn directory.

Whether a file was changed or not, it is an information that the
_client_ knows, before it contacts the server.

A "svn update" command sends to the server the start and end
revisions (the latter in the svn-update message, the first in the
set-path message).  Merging the information from the server (delta's)
with the working copy is the client's job.

To summarize, any svn-like downloader should at least know:
 1- the current revision of the working copy;
 2- the checksums of all the files in the repository, at the current
    revision. 

The "official" SVN client does more than point 2: it stores the whole
content of each file; this allows the "svn diff" and "svn revert"
commands to work off-line. 

Best regards,
-- 
rigo

http://rigo.altervista.org



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20130127124908.GB18833>