Hi,

OS X has a (pretty tasty) graphical merge tool called FileMerge, which 
can be invoked from the shell using the command 'opendiff'.

The opendiff command's syntax is:

   opendiff file1 file2 [-ancestor ancestorFile] [-merge mergeFile]

I've tried setting this as fossil's gdiff client, and it runs, but only 
the new version of the file is shown, and the error:

   The file “JourneyController.mm~0” does not exist.

Is printed on the command line.

To try and diagnose this, I've replaced the gdiff client with 'echo' to 
simply dump the arguments sent to the client to the console, which 
results in:

   Classes/JourneyController.mm~0 Classes/JourneyController.mm

And when I look, the file Classes/JourneyController.mm~0 doesn't exist, 
as FileMerge claims. Does it only exist briefly, perhaps, and the 
command line call 'opendiff' that invokes FileMerge is returning before 
FileMerge starts, which means that fossil then deletes the temporary 
file before FileMerge gets a chance to open it?

Ah - this sounds likely - here's a snip from the opendiff man page:

   "opendiff is a command line utility that provides a convenient way to 
launch the FileMerge application from Terminal to graphically compare 
files or directories.  If FileMerge is already running, opendiff will 
connect to that running instance for the new comparison.  opendiff exits 
immediately after the comparison request has been sent to FileMerge.

Hmmm. Presumably the solution would be to either have opendiff support a 
"synchronous" flag, or some kind of delay before return, or to introduce 
a hacky delay in to gdiff invocation?

:-) I think I've ended up answering my own question here, but does 
anyone have further advice?

Cheers,
        Benjohn
_______________________________________________
fossil-users mailing list
[email protected]
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users

Reply via email to