On Thu, Feb 02, 2012 at 03:15:29PM +0100, Steffen Daode Nurpmeso wrote:

> Henning Brauer wrote:
> > there aren't all that many repositories the size of ours out there.
> 
> That's true.
> But no Henning, i don't believe it's that;
> you know, it's just that i don't have anything to say, because
> i have no knowledge about the internals of cvs(1).
> 
> I always thought of this as some kind of misbehaviour in between
> OpenCVS and GNU cvs, because i would think of cvs(1) as something
> like this:
> 
>     cvs up .
>     |
>     read CVS/Entries
>     |
>     for those files with diff. timestamps, checksum file
>     |
>     send list [+ checksums] to server
>     |
>     server compare revision/timestamp/[checksum]
>     - client unmodified: send diff (expected final checksum?)
>     - client modified: send full file (if size < treshold),
>       otherwise do blockwise checksumming etc. (i.e. rsync-like)
>       [I don't really believe cvs(1) does the latter though.]
>     |
>     integrate diffs / replace locally modified files
> 
> Wether cvs(1) does do some rsync-like block-checksumming for
> locally modified files or not, uploading 10% of the repositories
> size or more before any data is sent from the server just can't be
> correct anyhow.  Even more for my usage case because there were no
> locally modified files at all.
> 
> And also the problem goes away if you do specify files directly,
> as with a file glob, so it makes a difference wether you say
>     $ cvs -fz9 up -PAC .
> or
>     $ cvs -fz9 up -PAC *.*
> I don't remember wether i've used -d or not.
> 
> So for me this turned out as either "look into the code,
> instrument some functions and try to fix it" or "turn over to
> cvsync".
> And GNU cvs is hard to look at, with a lot of comments which refer
> to some (numeric or so) error reports.  But it would surely be
> interesting to know what is going wrong.
> 
> --steffen

I like to say that long delays I have seen when using cvs had to do
with multiple different values of CVS/Root files in my local tree.

Those different entries can be created when doing a cvs up -d that
creates a new dir. If a cvs -d option is used at the same time, the
CVS/Root entry for tht dir wil be different than the other's. 

The exact cause of the slowdown is not known to me. But when you are
switch repositories once in a while it's easy to get this case. 

I repair this by find . -name Root | xargs rm and using a explicit cvs
root.

        -Otto

Reply via email to