Browse Source

diff: ignore --ita-[in]visible-in-index when diffing worktree-to-tree

This option is supposed to fix the diff of "diff-files" (not reporting
ita entries as new files) and "diff-index --cached <tree>" (showing ita
entries as present in the index with empty content) but not
"diff-index <tree>".

When --ita-invisible-in-index is set on "git diff-index <tree>",
unpack_trees() will eventually call oneway_diff() on the ita entry
with the same code flow as "diff-index --cached <tree>". We want to
ignore the ita entry for "diff-index --cached <tree>" but not
"diff-index <tree>" since the latter will examine and produce a diff
based on worktree entry's (real) content, not ita index entry's
(empty) content.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Nguyễn Thái Ngọc Duy 7 years ago committed by Junio C Hamano
parent
commit
ba4e356109
  1. 8
      diff-lib.c
  2. 2
      t/t2203-add-intent.sh

8
diff-lib.c

@ -389,8 +389,12 @@ static void do_oneway_diff(struct unpack_trees_options *o, @@ -389,8 +389,12 @@ static void do_oneway_diff(struct unpack_trees_options *o,
struct rev_info *revs = o->unpack_data;
int match_missing, cached;

/* i-t-a entries do not actually exist in the index */
if (revs->diffopt.ita_invisible_in_index &&
/*
* i-t-a entries do not actually exist in the index (if we're
* looking at its content)
*/
if (o->index_only &&
revs->diffopt.ita_invisible_in_index &&
idx && ce_intent_to_add(idx)) {
idx = NULL;
if (!tree)

2
t/t2203-add-intent.sh

@ -70,7 +70,7 @@ test_expect_success 'i-t-a entry is simply ignored' ' @@ -70,7 +70,7 @@ test_expect_success 'i-t-a entry is simply ignored' '
git commit -m second &&
test $(git ls-tree HEAD -- nitfol | wc -l) = 0 &&
test $(git diff --name-only HEAD -- nitfol | wc -l) = 1 &&
test $(git diff --name-only --ita-invisible-in-index HEAD -- nitfol | wc -l) = 0 &&
test $(git diff --name-only --ita-invisible-in-index HEAD -- nitfol | wc -l) = 1 &&
test $(git diff --name-only --ita-invisible-in-index -- nitfol | wc -l) = 1
'


Loading…
Cancel
Save