[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [BUG/Improvement?] Large file handling.

From: Derek Robert Price
Subject: Re: [BUG/Improvement?] Large file handling.
Date: Wed, 05 Nov 2003 08:28:27 -0500
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624 Netscape/7.1

Hash: SHA1

Eric Dumas wrote:

| Derek Robert Price wrote:
|> Nobody is currently working on this problem to my knowledge, but I might
|> personally like to see a patch that saved CVS/Base versions for all
|> commands and not just the edit command.  Once this was enabled, the next
|> step would be to enable client diffs to be sent ot the server rather
|> than complete files.
| Can you draft me mostly what needs to be done? I might be
| able to do this.

First, look at they way the edit command saves files in CVS/Base (the
string "CVS/Base" is held in the CVSADM_BASE macro defined in src/cvs.h)
and updates CVS/Baserev, then duplicate that behavior for checkout and
update.  Commit will likely also have to update CVS/Base on commit
(though you could use the local copy and not info from the server once
you know the commit is successful) and you'll probably have to remove
the code that removes the CVS/Base files after an unedit or a commit.

You should be able to gain some insight into the curent behavior by
searching for "Base" in src/sanity.sh.

Second, you'll have to add a server request (see the "requests" global
in server.c) which allows it to accept a patch rather than a full file.
See doc/cvs-client.info for informtation on the client/server spec and
consider setting CVS_CLIENT_LOG (see the CVS manual) to observe the
actual sequence of commands sent to and from the server.  You might also
be able to gain some insight from tests in sanity.sh.  In particular,
the "serverpatch" series of tests.

The sequence for server patches is to send the patch, but the client can
request a resend if the patch won't apply.  Something similar should be
appropriate for client patches.

The client patch should be easy to compute.  It will just be a diff of
the working file against the file in CVS/Base.  Search the code for
"diff_exec" for examples of how to do that.

When you are done, the current tests in sanity.sh should all pass.
Likely the watch/edit command tests that fiddle with CVS/Base files will
need tweaking.  You'll need to add a few tests (e.g. "clientpatch") for
the new behavior as well.  doc/cvs-client.texinfo will also require a
few notes as to the new behavior.

~ Clear as mud?


- --
~                *8^)

Email: address@hidden

Get CVS support at <http://ximbiot.com>!
- --
War doesn't determine who's right. War determines who's left.
Version: GnuPG v1.0.7 (GNU/Linux)
Comment: Using GnuPG with Netscape - http://enigmail.mozdev.org


reply via email to

[Prev in Thread] Current Thread [Next in Thread]