Community
Participate
Working Groups
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).
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.
Can't make faster for reasons Michael mentioned. Ensure that we have in FAQ.
Entry added to FAQ
This has been improved in 3.0. Sharing now does a fake checkout which speeds up the reconcile for this case.