Re: [PATCH] Resurrect diff-tree-helper -R
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:41:57
quoted
quoted
quoted
quoted
"PB" == Petr Baudis [off-list ref] writes:
PB> Dear diary, on Sat, May 14, 2005 at 12:59:31AM CEST, I got a letter PB> where Junio C Hamano [off-list ref] told me that...
quoted
Created: t/t2000-diff.sh (mode:100755) +Mode changed: path0 (100644->100755)
PB> Great, so it's even worse than before. :/
Depends on the definition of "before". At the beginning, we did
not do anything special and always said l/foo k/foo even when
create/delete was involved. Then we did a misguided attempt to
minimally be cg-diff compatible, which Linus complained that it
was too distracting for human consumption. The current one is
something in between, a lot more human side.
Yes, it is off course worse than the minimally cg-diff
compatible one, from cg-patch'es point of view.
You have seen what the current "something in between" does.
What I think is that in order not to distract human (read:
Linus) who reads patches, they should not share the same special
characters like "@". Which unfortunately completely contradicts
what you are attempting to do. Another thing we did while you
were looking other way ;-) was that we say mode changed only
when things change, so in that sense it is "inconsistent" from
the scripting point of view. These were all done to make the
output more readable by and less distracting for humans, per
request from Linus.
I do not think nobody uses that current textual "comment"
information in automated tools (I do not), so changing them
should not be a problem. How about we do something like this:
1. Invent an environment variable you can define. Let's say
GIT_DIFF_SHOW_MODES. It could alternatively a flag you
pass from git-diff-{files,cache,tree,tree-helper} to the
internal diff engine but then you need to add the necessary
command line parameter for all these commands. I can be
persuaded in either way.
2. When it is defined, we are not interested in pleasing Linus
by trying not to be distracting. We are more interested in
producing patch that is easily script processible.
3. Keep the current behaviour for human comsumption when we
are operating without the option we define in 1.
4. Change the mode stuff when GIT_DIFF_SHOW_MODES is defined.
It would produce one of the following for _all_ entries;
@. (100644->100755) path/to/a/file/that/changed/mode
@. (100644->120000) path/to/a/file/that/changed/to/symlink
@. (100644->100644) path/to/a/file/with/no/mode/change
@. (.->100644) path/to/a/new/file
@. (100644->.) path/to/a/deleted/file
I have to stress that these would come immediately before
the patch for each file. Not upfront, not grouped together
at the beginning.
BTW, what do you think about renaming git-diff-tree-helper to
just git-diff-helper? It used to be for grokking diff-tree's
output but now the family have the same raw output format it
does not make much sense to keep "tree" in its name.