Nguyễn Thái Ngọc Duy <pclo...@gmail.com> writes:
> The original commit d95d728aba06a34394d15466045cbdabdada58a2 was
> reverted in commit 78cc1a540ba127b13f2f3fd531777b57f3a9cd46 because we
> were (and still are) not ready for a new world order. A lot more
> investigation must be done to see what is impacted. See the 78cc1a5 for
> This patch takes a smaller and safer step. The new behavior is
> controlled by shift_ita flag. We can gradually move more diff users to
> the new behavior after we are sure it's safe to do so. This flag is
> exposed to outside temporarily as "--shift-ita" for people who prefer
> "git diff [--cached] --stat" to "git status"
Let's stop advertising this as a resurrection of something else.
The original that was unconditional was simply broken.
It is very good to refer to it (and its reversion), when justifying
why this version takes the particular approach to introduce a new
optional behaviour that can be toggled on selectively, by explaining
why doing this unconditionally was a broken idea that needed to be
But you would need to explain what problem this patch attempts to
solve and how before even going into that. The above two paragraphs
As I already said, --shift-ita is not quite descriptive and I think
it should be renamed to something else, but I kept that in the
following attempt to rewrite:
Subject: diff-lib: allow ita entries treated as "not yet exist in index"
When comparing the index and the working tree to show which
paths are new, and comparing the tree recorded in the HEAD and
the index to see if committing the contents recorded in the
index would result in an empty commit, we would want the former
comparison to say "these are new paths" and the latter to say
"there is no change" for paths that are marked as intent-to-add.
We made a similar attempt at d95d728a ("diff-lib.c: adjust
position of i-t-a entries in diff", 2015-03-16), which redefined
the semantics of these two comparison modes globally, which was
a disastor and had to be reverted at 78cc1a54 ("Revert
"diff-lib.c: adjust position of i-t-a entries in diff"",
2015-06-23). To make sure we do not repeat the same mistake,
introduce a new internal diffopt option so that this different
semantics can be asked for only by callers that ask it, while
making sure other unaudited callers will get the same comparison
result. This internal option is also exposed temporarily as
"--shift-ita" to help experiment.
After reading the three patches through, however, I do not think we
use the command line option anywhere. I'm inclined to say that we
shouldn't add it at all. Or at least do so in a separate follow-up
patch "now we have an internal mechanism, let's expose it anyway" at
the end. Which means that the last sentence in my attempted rewrite
The patch to diff-lib.c machinery looks good.