Re: Diffing directories with external diff

"kaczoroj" <[email protected]> Thu, 20 Apr 2006 02:48:21 -0000
Newsgroups gmane.comp.version-control.cvs.gui.devel
Message-ID <[email protected]>
Kirill,

Can you test with WinDiff?

In any way, I think we can implement an option to reduce the problem 
by sleeping a configurable time between invokations. Just provide an 
option to configure the sleep time and make the default 100.

Best Regards,
Jerzy

--- In [email protected], "kirillmueller" <mail@...> wrote:
>
> I got it working, finally!
> 
> My local WinCvs performs a diff for multiple files with only one 
> invocation of cvs. It issues one "cvs update -p" with all files in 
> question as argument. The command produces output on stderr _and_ 
> stdout -- the stderr output contains the name of the current file, 
> followed by the file's contents on stdout. I wrote a filter class 
> that parses this kind of output and generates temporary files 
> accordingly. After all temp files have been generated, the 
external 
> differ is launched once for every pair of files.
> 
> I've been testing the feature for a month now. Diffing multiple 
files 
> works much faster than before, with both local and remote 
> repositories. Apart from a problem that I've fixed today (correct 
> handling of added/removed files) I've found only one problem: The 
> differs that I've tested (Araxis Merge and WinMerge 2.4) crashed 
with 
> a huge (> 100) number of invocations. The problem did not occur 
> before because a cvs command was been issued before each 
invocation 
> of the differ, giving it time to sort its affairs and not to crash.
> 
> Do we need to care about that? If so, I would like to have this 
fixed 
> before I check in. I have four ideas and would appreciate feedback.
> 
> 1. Issue a diff command after every temp file has been written. 
Needs 
> special handling for the case "diff tag against tag". For local 
> repositories, the update still may be fast enough to confuse the 
> differ.
> 
> 2. Offer an option "Wait for external diff command to complete" 
> (checkbox in global options, WinCvs pane, default: off). When 
> checked, WinCvs would not launch a second diff instance before the 
> first one hasn't completed. This solution works with Araxis Merge 
(it 
> has its own launcher that exits immediately), but not with 
WinMerge.
> 
> 3. Launch only a limited number of comparisons (say, 10) at a 
time, 
> and prompt the user to continue or abort. The number can be made 
> customizable in above options pane.
> 
> 4. Hard-code a ::Sleep(50) between invocations of the external 
differ.
> 
> 
> Cheers,
> 
> Kirill
>







 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/cvsgui-dev/

<*> To unsubscribe from this group, send an email to:
    [email protected]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/