I have posted a new version of Yap Noel's reservations patch on sourceforge:
http://sourceforge.net/tracker/?atid=304680&group_id=4680&func=browse It has now been fairly well tested and includes documentation and test cases. This patch is not against an official release of CVS. Instead it is against the version that can be pulled out of the main repository with cvs -d :pserver:[EMAIL PROTECTED]:/cvs co \ -D "Oct 13, 2001 23:28:20 GMT" ccvs Other highlights: 1. If this gets integrated into official CVS, the following things may be needed: - Leave out the changes to src/version.c. Test case 'version-2r' will fail if you integrate these changes. - Remove the commented-out TODO item 180 (cvs edit should report current editors). (This patch implements this feature.) - Possibly leave out sockPlayer/cvsPlayer related files and the edit-check-cp test cases that use them. (More about this later.) 2. Some (not all) of the test cases use a new tool "sockPlayer". It is a generic socket communications record/playback tool that I wrote in order to simulate old versions of the CVS client/server protocol. If the tool has not been compiled successfully (in testTools directory), sanity.sh issues a warning that it isn't available and then skips those tests. [Actually, sanity.sh uses a wrapper script around sockPlayer called cvsPlayer.] There are a few reasons you might not want to include the sockPlayer stuff: - It might be too strict about changes in the protocol. Some minor changes won't break compatibility with older versions of CVS. - It is currently in ANSI C, not K&R. If truly desired, this could be changed, but its been a long time since I saw a compiler that doesn't handle ANSI. - It makes parts of sanity.sh dependent dependent on a non-standard tool. Presumably sockPlayer.c and it's build instructions could be embedded into sanity.sh, but that sounds extreme... - In terms of the reservations patch, no changes to the client/server protocol were actually made: It just makes minor changes to the way it is used. Despite these weaknesses, I think it might be worth considering using something like sockPlayer to gaurd against breaking client/server cross-version compatibility. 3. Internal changes: - The original patch used to use a seperate connection to the server to check for edits, and a full round trip for every file to check. Now it uses the same connection for checking edits and grabbing new ones, and it uses a single round trip to check edits for all files. - Fixed a problem with duplicate warnings for a non-existent file that an existing test case file. 4. Unrelated bug I found and fixed while preparing this patch: "cvs release -d" was loosing track of what directory it was in, causing it to sometimes mess up the current direotory's CVS/Entries file. I fixed it by adding a hook to client.c to let it know when the current directory is about to be changed out from under it, and cleaned up the way release.c was uneditting files. 5. Unrelated bug I have *not* fixed: Under the following conditions, CVS will hang in some kind of deadlock about the time it is supposed be closing the connection: - Running client/server CVS. - Client is CVS 1.11 (or other official release). - Server is from development '-D "Oct 13, 2001 23:28:20 GMT"' (or anything from the past couple of months, I think) - You have compression turned on (-z6 global option). I've tried to split the patch into sections that could be manually seperated with a minimum of effort: A. The main patch. B. version.c C. sockPlayer.c and related changes. (If this is left out, you will need to manually remove the corresponding edit-check-cpr tests in sanity.sh, which aren't seperated out.) -- Matthew Ogilvie [[EMAIL PROTECTED]] _______________________________________________ Info-cvs mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/info-cvs
