Re: Use meld to diff a list of files



On 18 March 2013 20:18, Svein Seldal <sveinse seldal com> wrote:
On 03/15/2013 09:20 PM, Kai Willadsen wrote:

I think you want the --diff command line argument, which launches a
tab for a two or three-way comparison. You can give Meld this argument
as many times as you like, and all of the comparisons will be launched
in tabs in a single window.


I just tried it with --diff, but it generates too many tabs for any
reasonable sized list.

Ah okay... I misunderstood what you were looking for.

What I'd like to have is a directory view with the list I provide meld, and
let the user pick the files to view diff on. This list is coming from python
already, so I can access the meld classes directly if I have to.

The reason I do this is because I need a tool for comparing root file
systems. Meld is perfect for visualising the differences, but it has some
features which spoils my usage. Meld seems to follow symlinks, which
pollutes melds output and it might end up comparing the wrong file (e.g. a
symlink pointing out of the file system). I know you can disable symlinks
alltogether, but that isn't what I need either. And then you have special
files (blk, chr, fifo and sockets).

I understand that this functionality is outside meld's scope, so I wrote my
own directory diff program in Py. It compares two directory trees and it
compares the metadata of files, e.g. link content/data instead of following
the link, blk/chr dev major/minor compare. For ordinary files it just
compares sizes and sha1 hashsums. If not equal I'd like to display the diff
in meld.

This all sounds good, but I can't think of any sensible way to do this
without hacking into the internals of Meld. The stuff you're looking
for is in DirDiff, which is sizable and not very well organised. Good
luck!

It sounds to me like you want to populate the folder comparison tree
with your own data and your own columns. Adding new columns is no (as
of 1.7.1) a feasible option (see e.g., column creation in
DirDiff.__init__ and state setting in DirDiff._update_item_state). The
hard part is filling your custom model. Depending on how your existing
Python code works, you may want to see whether you can shim the
additional information into DirDiff._search_recursively_iter, or you
may want to see whether you can replace that stuff entirely by just
manually creating your own treestore and setting it on DirDiff.

Anyway, those are just my guesses. Hope that helps.

cheers,
Kai


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