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