P2D3::Diff of changes not showing up properly

Issue #127 open
JD Fagan created an issue

I've attached a screenshot as well as 2 versions of file which should differ when asked by MacHG. Manually using FileMerge tool, the diffs do show up there - so seems to point to some issue with MacHG. Note, these are text files despite the sometimes strange use within the files - they are language syntax word definition files for the UltraEdit editor app so it can color code various programming languages within its editor.

Comments (12)

  1. Jason Harris repo owner

    Thanks for the data point. Yeah FileMerge is a little bit old and it has issues. Thus this isn't so much an issue with MacHg. However, I still need to investigate this though... Thanks...

  2. Bikramjit Sarkar

    Would just like to add my point to this too, and I think I may have found the problem:

    I've just started using mercurial, and I've been comparing it to git.

    I use Gitbox as the frontend for git, MacHG for mercurial, and both are configured to use FileMerge for diffing. The gitbox output of a diff in FileMerge is fine. The MacHG output of a diff in FileMerge will list the same number of differences (2 in my test case), but the window panes will both be blank.

    In the spawned FileMerge windows, the GitBox produced one will let me "Recompare Files" from the file menu. The MacHG one will not - FileMerge complains that the LHS file is missing - i.e. the one from the history of the repository.

    So it seems like FileMerge needs the files to still be present after diffing, so that they can be viewed correctly, but it appears you are deleting the temporary file produced by MacHG right away.

    While I think this is a good idea in general (ala garbage collection practices), you might consider letting temporary files persist, at least until MacHG is quit or the window is closed (but app still active), etc.

  3. Jason Harris repo owner

    Thanks for the comment!

    Yes I might try changing things and doing what you suggest. It turns out that I already create temporary files for things like quicklook... (Currently I just use the extdiff extension but I could likely switch over to this other way of doing things...)

    Thanks for the suggestion!

    Cheers, Jas

  4. Bikramjit Sarkar

    There's a suggested work around on the Mercurial wiki for using extdiff with FileMerge: http://mercurial.selenic.com/wiki/ExtdiffExtension

    They create a secondary script with a pipe command, that does some blocking, which will wait for FileMerge to quit before returning control to the extdiff call - I presume that extidiff then does the file clean up before it exits.

    I'm not sure what blocking like that would do in your multithreaded app - it might cause zombie threads to accumulate if FileMerge is not closed after each call - which is likely given the Mac model of keeping apps running unless the user explicitly quits out.

    If you are already maintaining temporary files yourself for quicklook, then I agree it might just be easier to use those.

    It's a shame that Apple isn't actively maintaining FileMerge - this could all be fixed if they simply cached/buffered the given input files - at the same time it is still my preferred gui diff utility, i just prefer the look of it's output over some of the other (free) options.

  5. Log in to comment