Re: Diffing directories with external diff

"kirillmueller" <[email protected]> Mon, 27 Feb 2006 09:26:11 -0000
Newsgroups gmane.comp.version-control.cvs.gui.devel
Message-ID <[email protected]>
Jerzy,

> I think if you put the "preview" files in their own view window it 
> will be difficult to operate from dialog boxes like commit dialog. 
Why not make all dialogs non-modal for that? Would be useful in many 
cases. (Ctrl+M, type some long message and realize that you've forgot 
something...) Opening two non-modal dialogs at the same time could be 
forbidden (the currently open modal dialog is stored in some 
variable).

> I think it's best to have it as a flat view instead of folder view 
+ 
> file view because it's easier to group files from different 
folders. 
> One can easily sort or filter by path to narrow view etc.
Honestly, I'd prefer a tree view for that. You can group by path as 
easy (just restrict your view to files in that folder), optionally 
one could of course filter the items in the tree view. We could 
implement both views, switchable by the already existing "Flat view" 
button.

> If you like the idea then create a flat file view with arbitrary 
files 
> then make it working with your diff implementation. We can extend 
it 
> later to accept files from different sources. It may be possible to 
> use current flat view for that if modified a bit.
Maybe that's the best approach for the "basket" -- implement a 
special case and then, after it's been tested, extend it to something 
more general. Let's see... If I'll do something like that, I will try 
to make it extendable to a general case. How can we coordinate this 
so this feature can make it into MacCvs and gCvs?

> Now that I got myself going I have another big idea. To make a 
folder 
> diff really fast and allow folder diff with different options it 
would 
> be best to get the diff output and then copy affected files to temp 
> folder and apply "patch" to it and then run an external diff. We 
used 
> to have patch.exe in our distro long time ago but it was dropped. 
We 
> could either re-introduce it or just copy some code out of it if 
it's 
> not too much. This is by far most efficient way but also much more 
> work.
That would be definitely the crudest speed-up possible, at least over 
slow connections. For the first time, we could rely on some external 
patch.exe or just supply our own binary (for WinCvs). We can even 
make do without it and use CVS's built-in patch algorithm:

- Copy the files in question to a temp folder (keeping the folder 
hierarchy and with the CVS sandbox files)
- Issue a cvs update -r... [-r...] for the temp location and only for 
those files

The "update" approach won't work if we want to avoid copying all 
sandbox files to the temp folder _and_ use one cvs diff pass only. 
So, if we're doing optimization in this direction, I think it's 
better to use a patch.exe of our own and apply the patches as they 
come.

Still, for changed files in the sandbox, a transmission of the 
file's "clean copy" is inevitable. (The CVS/Base subfolder is 
populated by the cvs edit command, we could optionally get the clean 
files from there if they exist.)

Let's keep this idea. For now, the performance of multi-file diff is 
horrible due to the fact that for every file a separate CVS 
connection is opened. I've figured out how to make it faster, this is 
what I'm about to do next.

Regards,

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/