2011/9/28 Trevor Schaffer <trevorschaf...@smarttech.com>:
> Yes, that basically will have to be our plan... going forward.  Now to try to 
> deal with what we have right now.
>
> I am a bit puzzled why the commit requires any information about other 
> folders seemingly not associated in any way with this particular commit 
> though.  I'm sure the database has it for its reasons, so I won't question 
> that too much.
>
> -----Original Message-----
> From: Andy Levy [mailto:andy.l...@gmail.com]
> Sent: Wednesday, September 28, 2011 9:16 AM
> To: Trevor Schaffer
> Cc: Stefan Sperling; users@subversion.apache.org
> Subject: Re: revs files growing over time, relatively
>
> On Wed, Sep 28, 2011 at 11:01, Trevor Schaffer
> <trevorschaf...@smarttech.com> wrote:
>> We definitely use svn copy for revisions, but I think the issue is because 
>> our tags are too flat vs not flat enough.
>>
>> E.g. tags/builds/ is where we put all of our tags (all done with svn copy)
>> And over time, this folder has over 7000 tags in it.  So now, ever new tag 
>> we put into /tags/builds has a listing of every other tag from tags/builds 
>> in the revs/db/<rev> file.  Now when you have 4 lines in each rev file for 
>> each entry in the tags folder, that's 28000 lines of text, which gives us 
>> the roughly 600KB of data.  And you can see how this grows over time.  So 
>> obviously, in hindsight... we need to lessen the tags significantly, but 
>> current processes in our company will not allow us to do that quickly, or 
>> easily.
>
> Would it be possible to clean up your tags directory, maybe on a
> quarterly or annual basis? So instead of having a flat /tags/builds
> "dumping ground", you have;
>
> /tags/builds/
> /tags/builds/2011Q1
> /tags/builds/2011Q2
> /tags/builds/2011Q3
> /tags/builds/2011Q4
>
> Your tags go into /tags/builds as they do today, but then at the end
> of each quarter, you move that quarter's builds into the corresponding
> directory.
>

Huh. Top-posing is bad.

When you create a new tag "tags/FOO" it results of a new version of
"tags" directory.

Subversion is not able to compare two directories and store a "delta"
between them. Instead it stores a new complete version of the "tags"
directory.

(I think that gives better performance when someone needs to read that
directory).

Thus, as you noted, 7000 tags become 600KB of data.

I agree with Andy's proposal to shard tags directory into several
sections, e.g. by date.


Though it would be easier if those quaterly directories were outside
of your "builds" directory. E.g.:
 /tags/builds/
 /tags/builds-archive-2011-01/

In is easy to do "svn mv ^/tags/builds ^/tags/builds-archive-2011-01/"
in one transaction.
Then you follow it by "svn mkdir ^/tags/builds"

Note:
1) svnmucc allows to perform both mv and mkdir in one commit
2) you can still access your old tags at the old place it you use peg revisions,
 /tags/builds/MYOLDTAG@oldrevnumber

Best regards,
Konstantin Kolinko

Reply via email to