[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: 350GB SVN repo creates around 1MB revision for simplest task

From: B Smith-Mannschott <bsmith.occs_at_gmail.com>
Date: Wed, 13 Oct 2010 09:18:40 +0200

On Wed, Oct 13, 2010 at 00:45, FAISAL YAQOOB, BLOOMBERG/ 731 LEXIN
<fyaqoob_at_bloomberg.net> wrote:
>
>
> This all started when I noticed that my repository size is increasing at a daily rate of 1GB. I did a simple test. Created a branch/tag of an existing folder that had a size of 35KB. I took note of revision number and went to $REPO/db/revs/<K-rev>/rev-number/ and checked the size of the revision. It was 1 mega byte. That sounds fishy. Any ideas on what might be wrong here. My repo is about 350GB in size with about 600,000 revisions.
>
> P.S. I have already started a rebuild of the whole repository to see if that makes any difference but it will probably take days to complete.
>
>
> Question: Is there anything in svn that when it reaches a certain size every commit will be that large?

Does your repository contain a directory with very many entries? Are
the changes that produce the large commits being made in or below such
a directory?

Let's assume to commit a single change to a single file to your
repository. Let's further assume the file is located here, in your
repository:

/project/trunk/some-really-large-directory/notes/blah.txt

When you commit the change to blah.txt, the new revision will rewrite
the directory nodes between 'blah.txt' and the root of the repository:
/project/trunk/some-really-large-directory/notes,
/project/trunk/some-really-large-directory, /project/trunk, /project,
/. When rewriting a directory node, FSFS always stores the new version
in its entirety. (This is different from the way changes to files are
stored, which are generally as differences to some previous version of
the same file.)

If /project/trunk/some-really-large-directory/ contains, say 10000
files, then each commit to blah.txt will store a full copy of this
directory (with its 10'000 names) in your repository.

I noticed this when I started keeping a personal wiki under version
control a few years ago. It was a flat directory of over 10'000 text
files. I quickly noticed that commits were pretty big. (I've since
switched to git for that task, for this and other reasons.)

see also
http://svn.apache.org/repos/asf/subversion/trunk/notes/subversion-design.html#server.fs.struct.bubble-up

// Ben
Received on 2010-10-13 09:19:20 CEST

This is an archived mail posted to the Subversion Users mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.