New submission from Zooko <[EMAIL PROTECTED]>:

Darcs is now unusable for my co-worker Rob.  He has started using rsync to
transfer between systems.  There's always the possibility that he will go back
to using SVN.  Much of the analysis below is suspect because this happens only
on Windows as far as I know.

--Z

<zooko> [11:32:35] [EMAIL PROTECTED]: push's been running for 10 min.
<zooko> [11:32:46] [EMAIL PROTECTED]: I wish it were over.
<zooko> [11:32:51] zooko2: The #darcs folks want to know what's the message
        that it prints out.
<zooko> [11:32:54] zooko2: Something about copying a file.
<zooko> [11:33:14] zooko2: They are investigating.
<zooko> [11:33:28] [EMAIL PROTECTED]: this message?
<zooko> [11:33:29] [EMAIL PROTECTED]: darcs4b3406 | 0 kB | 1.0 kB/s |
        ETA: 00:00:00 | 100%
<zooko>  darcsf8004a | 0 kB | 0.2 kB/s | ETA: 00:00:00 | 100%
<zooko>  darcs726601 | 0 kB | 0.5 kB/s | ETA: 00:00:00 | 100%
<zooko>  darcs4ee832 | 6 kB | 6.9 kB/s | ETA: 00:00:00 | 100%
<zooko>  darcs2dd35b | 1 kB | 1.8 kB/s | ETA: 00:00:00 | 100%
<zooko>  darcs1a8291 | 1 kB | 1.5 kB/s | ETA: 00:00:00 | 100%
<zooko>  darcs2eeb7e | 0 kB | 0.0 kB/s | ETA: 00:00:00 | 100%
<zooko>  darcs2bdb50 | 0 kB | 0.2 kB/s | ETA: 00:00:00 | 100%
<zooko>  darcs1ad51c | 0 kB | 0.3 kB/s | ETA: 00:00:00 | 100%
<zooko>  darcs1cf758 | 1 kB | 1.1 kB/s | ETA: 00:00:00 | 100%
<zooko>
<zooko> [11:33:35] [EMAIL PROTECTED]: pages and pages of it.
<zooko>
<zooko> Note that the number of lines grows apparently linearly with how long
        we've been adding patches to our project.
<zooko> So it runs slower every day for Rob.
<kowey> huh... that's ssh that's doing that, i think
<kowey> normally, when darcs calls ssh, we send the output to /dev/null
<kowey> s/ssh/scp/ in this case
<zooko> Yes.
<zooko> So apparently darcs calls ssh O(n) times where n is the number of
        patches.
<zooko> scp I mean.
<kowey> ok, so it's not the output that's the problem, but the fact that it's
        doing all these scp - right?
<zooko> Right.
<kowey> ok... so i think i've got an analysis for the problem -- this doesn't
        mean i want to fix it, but maybe we can write this in a bug report
<zooko> Ok.
<kowey> the thing is that darcs push has to get (minimally) a list of patches
        from the other side, some of the patches (i don't know which, and why)
        in order
<kowey> to make a comparison as to what patches the other guy has and what
        patches you've got
<kowey> to do this, it calls read_repo, which does 2 things
<kowey> 1) it reads the inventory
<kowey> 2) in a NON-LAZY fashion, it fetches all the patches in _darcs/patches
<arjanb> it should need only the inventory for the comparison part..
<kowey> maybe... instead of calling read_repo, we can call lazily_read_repo
        (or just fetch the inventory)
<kowey> does the local end have to do any commutation type stuff? i doubt
        it... i thought push was just sending the stuff over and asking the
        other side to do apply?
<zooko> As far as I know.
<zooko> It should just (a) figure out which patches to prompt the user about,
<zooko> (b) interact with the user,
<zooko> (c) send those patches (including required patches that the other side
        lacks) over to the other side.
<kowey> the problem is that (a) is harder than it looks, i'll bet
<kowey> maybe it is impossible to tell what patches you and the other side
        have in common without actually getting the patches themselves
<zooko> Hm.
<kowey> (i hope it isn't, of course)
<zooko> Ah yes.
<zooko> This is the part of darcs basic architecture that I don't like.
<zooko> It computes this kind of metadata -- which patches depend on which --
        at runtime, from the patches.
<zooko> Rather than at patch-creation time and then storing the metadata as
        metadata.
* kowey suspects that the metadata is often in the interaction between patches
<kowey> and not the individual patches themselves
<kowey> that being said, we might be able to store such metadata as well... a
        bit like chart parsing
<zooko> No, the question of "On which other patches does this patch depend?"
        can be answered using only information present at the time the patch
        is created.
<zooko> What patches I have in my repo, later, when pulling, cannot change the
        answer to that question.
<zooko> At least in my idealized world.

----------
messages: 572
nosy: droundy, tommy, zooko
status: unread
title: Windows: darcs pull takes longer and longer when there are more and more 
patches

____________________________________
Darcs issue tracker <[EMAIL PROTECTED]>
<http://bugs.darcs.net/issue150>
____________________________________

_______________________________________________
darcs-devel mailing list
darcs-devel@darcs.net
http://www.abridgegame.org/cgi-bin/mailman/listinfo/darcs-devel

Reply via email to