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>
