monotone-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Monotone-devel] automate log?


From: Stephen Leake
Subject: Re: [Monotone-devel] automate log?
Date: Sat, 24 May 2008 07:38:10 -0400
User-agent: Gnus/5.1008 (Gnus v5.10.8) Emacs/22.1 (windows-nt)

Stephen Leake <address@hidden> writes:

> Thomas Keller <address@hidden> writes:
>
>> Stephen Leake schrieb:
>>> I'm thinking of adding a new 'automate log' command.
>>> It would have options for specifying what data to include in the
>>> output, and output everything in basic_io.
>>> The rationale for this is that the current Emacs DVC implementation
>>> of
>>> "show log for this file" is incredibly slow.
>>> Emacs DVC uses the existing automate functions to retrieve all the
>>> information it needs for "show log for this file". That ends up being
>>> a _lot_ of automate calls, and it scales with the size of the
>>> database, since essentially every revision  must be examined to see if
>>> it changes the file. Even using automate stdio, it is far too slow to
>>> be useful.
>>
>> I've implemented that as well and used automate get_content_changed
>> and automate get_corresponding_path so I only had to examine those
>> revisions where the file was actually changed (content marks). This is
>> actually quite fast and can works incrementally just like mtn log
>> does.
>
> Emacs DVC uses get_content_changed as well. However, that does not
> show _all_ revisions that changed the file; only the last revision
> that did.
>
> So we have to call it again on that revision, etc. This is too slow,
> at least in the Emacs implementation. It does not examine _every_
> revision in the database; I just had that impression because it was so
> slow :).
>
> One problem with the Emacs implementation is that it finds _all_
> revisions that changed the file, even if the user only requested the
> last 10 (emulating 'mtn log --last-n'). I'll fix that first, and see
> if it's fast enough.

It turns out there was a nasty bug in the Emacs implementation; it was
actually an infinite loop. So now it works; still slow, but acceptable
given everything else on my list of things to do.

So I won't be working on 'automate log' right now; maybe later.

-- 
-- Stephe




reply via email to

[Prev in Thread] Current Thread [Next in Thread]