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.
Dear diary, on Sat, May 14, 2005 at 01:59:36AM CEST, I got a letter
where Junio C Hamano [off-list ref] told me that...
quoted
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
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.
By "before" I meant the Linus proposal I was originally replying too.
It seems I'm still missing part of the history. :-)
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.
I don't think it discards humans, actually. I'd rather say it makes them
aware that this is something special. And if you show it only when the
mode changes, it will always be a special thing, not only something
which clutters the view.
So I'd say it's better for humans too, since it is clear for them that
this is not part of the commit message, and it carries special meaning
for the tool they will feed it to.
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.
I have no issue with that.
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.
I think this completely misses the point. You are viewing what I'm
suggesting as trying to just aid Cogito's internals using cg-diff |
cg-patch, but that's actually not my major reason for doing this at all.
I view that as a hack anyway and it should eventually do a three-way
merge too at those places.
What I'm trying to do is to figure out a good encapsulation for mode
changes which can be put in *all* the patches. So when you are sending
me some new testcases, I don't have to chmod them manually. That's the
main point of doing this. I could deal with mode changes completely
separately if it was only about Cogito's internal stuff.
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.
No issue with that.
--
Petr "Pasky" Baudis
Stuff: http://pasky.or.cz/
C++: an octopus made by nailing extra legs onto a dog. -- Steve Taylor