Hello Manoj

Manoj Gudi wrote:
> Hey!
> I must say that having git learnt first, darcs seems very simple and
> intuitive to use, really like it!

Thanks!

> and now the but:
> 
> I am trying to commit a new log file (size 20Mb), `darcs record` works
> fine, however `darcs push` hangs after asking for credentials..
> 
> the repository is hosted on hub.darcs.net; I already checked network and
> credentials, I can push a small file and it works fine..
> 
> When I try the same thing on an another machine, I get output as
> 
> *killedShall I push this patch? (1/1)  [ynW...], or ? for more options:
> yKilled*
> I understand that log file shouldn't be version controlled, well, at least
> not like this.. but I really want to try this cause this fits my use-case
> (incrementally versioning changes in logs)
> 
> Any ideas?

You hit a long-standing weak spot of Darcs: transmitting large files can 
take a long time.

The good news is that it /will/ finish. This is not an exponential explosion 
like with the old "conflict wars", where you could wait until the universe 
ends, it just takes longer than one would expect. Unfortunately there is no 
indication of progress, even with --debug --verbose.

So, don't despair, just give it more time ;-)

However, we should definitely fix this!

With a simple test example I can reproduce this easily. Investigating a bit 
(using the HEAD and --debug --verbose), I found this:

[...lots of stuff that initially scrolles by...]
ssh frank...@tiber.acc.bessy.de darcs apply --all --debug --repodir 
'/tmp/large'
Beginning identifying repository .
Done identifying repository .
Identified darcs-2 repo: /tmp/large

and then it seems to hang for about 6 minutes(!). When it finally continues, 
I get:

Beginning defining set of chosen patches
Done defining set of chosen patches
Beginning merging them
Done merging them
Beginning examining patches for conflicts
Done examining patches for conflicts
Checking for conflicts...
Announcing conflicts...
Checking for unrecorded conflicts...
Beginning identifying repository .
Done identifying repository .
Reading working directory...
Working out conflicts in actual working directory...
Applying patches to the local directories...
Adding patches to inventory...
Writing hash file to patches
In fetchFileUsingCachePrivate I'm going manually    getting 0001038242-
ec7da30a47e5c1b4bcf79b1a144aa629301bc65ff6d3abc91f204d6b499d4e38    from 
/home/franksen/.darcs/cache/patches/0001038242-
ec7da30a47e5c1b4bcf79b1a144aa629301bc65ff6d3abc91f204d6b499d4e38
No sources from which to fetch file `0001038242-
ec7da30a47e5c1b4bcf79b1a144aa629301bc65ff6d3abc91f204d6b499d4e38'
thisrepo:/tmp/large
cache:/home/franksen/.cache/darcs
readonly:/home/franksen/.darcs/cache

etc etc and it finishes pretty soon afterwards.

During the long time darcs is silent, cpu and memory usage by the remote 
Darcs is negligable (as reported by top). The local darcs process seems to 
be quite busy initially, but that drops down to similar levels pretty soon.

This lets me guess it is a matter of the underlying file transfer being less 
than optimal.

Question for the experts: Where in the code is the file transfer 
implemented? What mechanism is used?

Cheers
Ben
-- 
"Make it so they have to reboot after every typo." -- Scott Adams


_______________________________________________
darcs-users mailing list
darcs-users@darcs.net
http://lists.osuosl.org/mailman/listinfo/darcs-users

Reply via email to