Actions:
|
2012-02-09 11:46 AEST by Arthur Barrett - If I do 'cvs diff -c' on a direcrory where I have just 'added' a binary file
it is very slow:
11:36:19: -> do_file_proc: mapped name of file "OTAClient.dll"
11:36:19: -> do_file_proc: call findnode_fn()
11:36:19: -> do_file_proc: got a result from findnode_fn()
11:36:19: -> do_file_proc: verify_access() returned ok
11:36:19: -> send_fileproc (1)
11:36:19: -> send_a_repository
(,/scotty/triggers/bug_trigger/bugqcmfc,bug_trigger/bugqcmfc)
11:36:19: -> send_repository
(,/scotty/triggers/bug_trigger/bugqcmfc,bug_trigger/bugqcmfc)
11:36:19: -> Version_TS(<NULL>,<NULL>,0)
11:36:19: -> wnt_stat(OTAClient.dll)
11:36:19: -> _statcore(00000000,OTAClient.dll)
11:36:19: -> Trying GetFileAttributesEx....
11:36:19: -> File attributes = 00000020
11:36:19: -> - read/write file
11:36:19: -> GetUnixFileModeNtEA(O,000003D0) returns 0400
11:36:19: -> Sending file 'OTAClient.dll' to server
11:36:19: -> wnt_stat(OTAClient.dll)
11:36:19: -> _statcore(00000000,OTAClient.dll)
11:36:19: -> Trying GetFileAttributesEx....
11:36:19: -> File attributes = 00000020
11:36:19: -> - read/write file
11:36:19: -> GetUnixFileModeNtEA(O,000003D0) returns 0400
11:36:19: -> If the file is unicode (and the remote server supports it),
translate it to utf8 before transmitting.
11:36:19: -> encode is NOT set.
11:36:19: -> wnt_stat(OTAClient.dll)
11:36:19: -> _statcore(00000000,OTAClient.dll)
11:36:19: -> Trying GetFileAttributesEx....
11:36:19: -> File attributes = 00000020
11:36:19: -> - read/write file
11:36:19: -> GetUnixFileModeNtEA(O,000003D0) returns 0400
11:36:19: -> Sending binary file of size '6755328' to server unencoded
without md5.
11:36:19: -> send_to_server_untranslated: size > 100k, calling
buf_send_immediate
11:37:38: -> Unloading - about to clear list
11:37:38: -> Unloading - cleared list
There are so many problems here, it's hard to list them all:
1. why send a binary file for diff?
2. why send a file that doesn't exist on the server anyway?
3. why is it slow to send only 6MB?
CVSROOT connection string:
11:36:13: -> main loop with CVSROOT=:ssh:mail.march-hare.com:/scotty
Versions of client and server:
11:36:16: -> Server version is CVSNT 2.8.02 (Cally) Build 3922 (RC 1)
11:36:16: -> Client version is CVSNT 2.8.02 (Cally) Build 4427 (RC 2)
Codepages:
11:36:16: -> Server codepage is UTF-8
11:36:16: -> Client codepage is CP1252
It eventually (after very very slowly uploading the file) returns with:
cvsnt server: bug_trigger/bugqcmfc/OTAClient.dll is a new entry, no comparison
available
Ideally I want that message sooner. I believe if it wasn't new then it'd also
come back with 'cannot diff binary files'. Both messages should be returned
sooner.
I suspect the problem is the protocol, the client nevery gives the server a
chance to say, no don't send that one. So it means :
* a protocol change (do you want that I should be bothered sending this?) or
* a client change (compare the server entries with the client entries - the
server doesn't know about it then don't send)
It's possible we can piggy back this change on the back of the md5 changes
already done. ie: it's just a special case of md5 when the server has no
file, send a 'zero' md5; then don't fall back to sending the file for binary
files. This makes it a client only change. |