Bug 22176 - [CVS Sync View] CVS synchronization chokes on big repositories.
Summary: [CVS Sync View] CVS synchronization chokes on big repositories.
Status: RESOLVED WORKSFORME
Alias: None
Product: Platform
Classification: Eclipse Project
Component: Team (show other bugs)
Version: 2.0   Edit
Hardware: PC Windows 2000
: P5 enhancement (vote)
Target Milestone: ---   Edit
Assignee: Platform-VCM-Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords: faq
Depends on:
Blocks:
 
Reported: 2002-08-05 12:31 EDT by Scott Pedigo CLA
Modified: 2004-05-28 15:41 EDT (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Scott Pedigo CLA 2002-08-05 12:31:27 EDT
I (somewhat naively) created a project named "mozilla" and tried to synchronize
with the mozilla source code. See http://www.mozilla.org/cvs.html for details on
their repository. I used host = "cvs-mirror.mozilla.org", repository =
"/cvsroot", user name and password both = "anonymous". I used an Athlon XP 1600+
system with 512 MB RAM and an ADSL connection 256/64. It took many hours (about
6 I think) to display the list of incoming files. I selected "mozilla" and
started an update. The system quickly choked with an "internal failure" error
message - but gracefully - as Eclipse kept running (bravo). I tried selecting
from lower down in the tree and was able to update some stuff. On one attempt I
got an out of memory error message (prompting me to subsequently install another
512 MB in my PC). After over a day of getting bits and pieces I finally threw in
the towel. On a side note, the progress bar didn't seem to be a reliable
indicator when huge amounts of data were involved - it often just remained blank.

I don't know how CVS works internally, but it seems like there ought to be a
better way to deal with this.

If possible, it would be desirable for Eclipse to give some indication of the
size of the transfer and prompt to proceed if the size exceeds some limit
(similar to the common e-mail client option of not automatically downloading
messages exceeding some size), and here I'm referring not just to the source
itself, but also the information needed to display the
incoming/outgoing/conflict tree.

It would also be nice if the synchronization window would be periodically
updated while the synchronization information was being obtained (specifically
the incoming stuff), as opposed to having a blank window for several hours.

It would be nice if instead of being a modal type dialog which blocks the use of
Eclipse until it is finished, the synchronization for a given project would be
done by a background task/thread, allowing the user to work on an unrelated
project in the meantime. I would expect the involved project to be "blocked"
during this time, but not being able to work at all during a multi-hour
synchronization is tedious.

It would be not only nice, but is proabably necessary, that Eclipse be able to
handle large repositories by walking up and down the repository tree and getting
stuff in a recursive manner, instead of trying to get its head around the entire
update (i.e. having the entire thing in memory at once).
Comment 1 Michael Valenta CLA 2002-08-09 11:48:09 EDT
The particular method you have chosen to populate your workspace (i.e. create a 
new project and then sync against a large existing one) happens to be one of 
the most ineffiecient operations in the Eclipse CVS client. The CVS protocol 
does not support this type of operation directly which results in the 
ineffiecient, communication intensive operation. The proper way to populate 
your workspace is to use "Checkout as Project" from the CVS Repositories view. 
Once the project and its conectnts exists locally, the synchronize operatons 
should be much faster.
Comment 2 Kevin McGuire CLA 2002-08-12 16:16:49 EDT
Can't make faster for reasons Michael mentioned.  Ensure that we have in FAQ.
Comment 3 Michael Valenta CLA 2002-09-11 14:31:20 EDT
Entry added to FAQ
Comment 4 Michael Valenta CLA 2004-05-28 15:41:51 EDT
This has been improved in 3.0. Sharing now does a fake checkout which speeds 
up the reconcile for this case.