Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 11 Aug 1996 12:28:17 -0459 (CDT)
From:      "Boyd R. Faulkner" <faulkner@asgard.bga.com>
To:        jdp@polstra.com (John Polstra)
Cc:        current@FreeBSD.org
Subject:   Re: Praise for CVSup
Message-ID:  <199608111728.MAA00442@utgard.bga.com>
In-Reply-To: <199608100159.SAA24389@austin.polstra.com> from "John Polstra" at Aug 9, 96 06:59:42 pm

next in thread | previous in thread | raw e-mail | index | archive | help
According to John Polstra:
> 
> 
> > CVSup does more file checking than sup does.  You can end up with
> > files with the right date and size but not the right contents and,
> > while I may be wrong, sup will not detect this.  Since CVSup uses
> > MD5 (yes?)  to ID the files, you are gurarnteed the correct contents.
> 
> Well ... yes and no.  It depends on the situation.  In general, CVSup
> does _not_ ID the files via MD5 checksums.  It compares the time stamps
> between the client and the server, and if they are identical, it assumes
> that the files are identical too.  In that case, it doesn't examine the
> files further.  (There is an exception which, I conjecture, applies to
> your particular case.  I'll explain that in a minute.)
> 
> The reason it doesn't compare MD5 checksums for every file on the client
> and the server is that it would be too slow, too compute intensive, and
> too disk intensive.  No real-time network file update package could do
> that, without bringing the server to its knees.  It has to cull the
> unchanged files from the list using just the information that it can get
> from a call to stat().
> 
> The exception is when you are using CVSup's checkout mode the very
> first time.  In that case, CVSup cannot ID your existing checked-out
> files via the time stamps, because the time stamps of the checked-out
> files are not the same as the time stamps of the corresponding RCS
> files on the server machine.  So it really has no choice.  On the
> client, it checksums each file.  On the server, it parses each RCS
> file, and checksums each revision on the selected branch, from most
> recent to least recent.  This is the worst situation, in terms of
> server load, but it's not as bad as it sounds.  First, it's computing
> the checksums on the fly as it generates revisions -- not doing
> some gross thing like calling "co" to emit them to temporary files.
> So its main activity involves crunching through a memory-mapped
> RCS file, computing the checksums as it goes.  Second, if the client
> already has files, they're probably fairly recent.  So the server
> won't have to checksum very many revisions before it finds the
> right one.  Third, this situation only happens the first time a
> given client uses CVSup in checkout mode.  After that, the so-called
> "list files" remember which revisions the client possesses.

So you can force the issue by deleting the info files.

This is doubtless what happened.  Perhaps I could have done the same
thing by blowing away the sup info files.  I still like this one better.

Thanks again,
Boyd

-- 
_____________________________________________________________________________

        Boyd Faulkner            "The fates lead him who will;
   faulkner@asgard.bga.com       Him who won't, they drag."
http://asgard.bga.com/~faulkner  Old Roman Saying -- Source:  Joseph Campbell
_____________________________________________________________________________



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