How to make `hg diff` show whitespace changes?
Matt Harbison
mharbison72 at gmail.com
Thu Jan 14 16:04:38 UTC 2016
(cc: list)
On Thu, 14 Jan 2016 10:26:05 -0500, Noemi Millman
<noemi.millman at backstage.com> wrote:
>
> Thanks, Matt!
>
> Great call about the resource forks (and a facepalm moment for me!) I
> can confirm that that's the problem, since changing the default app to
> open a file without editing the file itself adds it to the list of
> mysteriously changed-yet-unchanged files.
>
> I wonder why Mercurial recognizes resource fork changes but git doesn't?
It's been a few months since I looked into it, but IIRC, the python call
used to determine the file size sees both the data and resource forks.
Thats going to be different from the data-fork-only size in Mercurial. So
nothing you can do without submitting patches, but you should probably
wait until after Feb 1 to do that. It may be too close to a code freeze
now to mess around with that.
I noticed it because of beyondcompare like I said, but it was
"intermittent" because extdiff sometimes copies the files to a temp
directory, and sometimes opens them in place. When Mercurial copies the
file back to your working directory from /tmp, it ignores the resource
fork that was made in /tmp/foo, so the problem doesn't happen.
If you can't restore to a clean copy with 'update -C', that seems like a
bug to me.
> I'll have to do a bit of research to figure out how to get Mercurial to
> ignore them, and will post back if I can for the reference of anyone who
> encounters this in the future.
>
> cheers,
> -Noemi
>
>> On Jan 13, 2016, at 10:58 PM, Matt Harbison <mharbison72 at gmail.com>
>> wrote:
>>
>> On Wed, 13 Jan 2016 11:03:37 -0500, Noemi Millman
>> <noemi.millman at backstage.com> wrote:
>>
>>> Thanks, Matt!
>>>
>>> Why would a merge show a file as changed if contents, permissions,
>>> line endings, etc. haven't changed?
>>
>> In addition to what Matt said (which is likely the reason for your
>> merge issue), be aware of resource forks on OS X. Mercurial doesn't
>> track or handle them, but if a tool adds one, status will say 'M' and
>> diff will show nothing because the file size changes. You can see if
>> you have them with `ls -l@`.
>>
>> They seem to get created with BeyondCompare on 10.6.8, but not on
>> 10.10. I forget if `hg update -C` removes them, but I'm thinking not
>> since I've gotten into the habit of manually removing them.
>>
>>>> On Jan 13, 2016, at 10:53 AM, Matt Mackall <mpm at selenic.com> wrote:
>>>>
>>>> On Wed, 2016-01-13 at 07:13 -0800, Noemi wrote:
>>>>> When I run `hg status`, it shows a few files as changed, but `hg
>>>>> diff`
>>>>> outputs absolutely nothing. Why might this happen other than
>>>>> whitespace
>>>>> changes?
>>>>
>>>> Line ending, empty vs deleted, copies, renames, exec bits, merges,
>>>> etc.
>>>>
>>>>> If it is whitespace changes, how can I make `hg diff` display
>>>>> them? The docs explain how to ignore whitespace changes, but not
>>>>> how to
>>>>> make sure they're displayed.
>>>>
>>>> They're displayed by default.
>>>>
>>>> The standard diff tool was created in 1974. Mercurial was created in
>>>> 2005. So
>>>> asking why the diff format doesn't capture all the details is a bit
>>>> like asking
>>>> why a VHS (1976) copy of a BluRay (2006) doesn't look as good.
>>>>
>>>> We also support the Git format with -g which will show some but not
>>>> all of the
>>>> aforementioned differences and also breaks some of the tools that
>>>> work with
>>>> standard diffs.
>>>>
>>>> --
>>>> Mathematics is the supreme nostalgia of our time.
>>>>
>>>
>>> _______________________________________________
>>> Mercurial mailing list
>>> Mercurial at selenic.com
>>> https://selenic.com/mailman/listinfo/mercurial
More information about the Mercurial
mailing list