Re: [PATCH v2] diff-files: treat "i-t-a" files as "not-in-index"
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jun 20, 2020, 16:54 UTC
- Message-ID
- <xmqqsgepekzr.fsf@gitster.c.googlers.com>
- In-Reply-To
- <20200620163845.871-1-shrinidhi.kaushik@gmail.com>
Srinidhi Kaushik <shrinidhi.kaushik@gmail.com> writes:
Show 18 quoted lines
> The `diff-files' command and related commands which call the function > `cmd_diff_files()', consider the "intent-to-add" files as a part of the > index when comparing the work-tree against it. This was previously > addressed in commits [1] and [2] by turning the option > `--ita-invisible-in-index' (introduced in [3]) on by default. > > For `diff-files' (and `add -p' as a consequence) to show the i-t-a > files as as new, `ita_invisible_in_index' will be enabled by default > here as well. > > [1] 0231ae71d3 (diff: turn --ita-invisible-in-index on by default, > 2018-05-26) > [2] 425a28e0a4 (diff-lib: allow ita entries treated as "not yet exist > in index", 2016-10-24) > [3] b42b451919 (diff: add --ita-[in]visible-in-index, 2016-10-24) > > Signed-off-by: Srinidhi Kaushik <shrinidhi.kaushik@gmail.com> > ---
Thanks.
Show 30 quoted lines
> -test_expect_success 'diff-files/diff-cached shows ita as new/not-new files' ' > +test_expect_success 'i-t-a files shown as new for "diff", "diff-files"; not-new for "diff --cached"' ' > git reset --hard && > + : >empty && > + content="foo" && > + echo "$content" >not-empty && > + > + hash_e=$(git hash-object empty) && > + hash_n=$(git hash-object not-empty) && > + hash_t=$(git hash-object -t tree /dev/null) && > + > + cat >expect.diff_p <<-EOF && > + diff --git a/empty b/empty > + new file mode 100644 > + index 0000000..$(git rev-parse --short $hash_e) > + diff --git a/not-empty b/not-empty > + new file mode 100644 > + index 0000000..$(git rev-parse --short $hash_n) > + --- /dev/null > + +++ b/not-empty > + @@ -0,0 +1 @@ > + +$content > + EOF > + cat >expect.diff_s <<-EOF && > + create mode 100644 empty > + create mode 100644 not-empty > + EOF > + cat >expect.diff_a <<-EOF && > + :000000 100644 0000000 $(git rev-parse --short $hash_t) A$(printf "\t")empty > + :000000 100644 0000000 $(git rev-parse --short $hash_t) A$(printf "\t")not-empty
This is good, but just FYI you did not have to use printf --- "<<-" treats only leading tab specially, and not in the middle of a line.
> + EOF > + > + git add -N empty not-empty &&
OK. So with two paths...
> + > + git diff >actual && > + test_cmp expect.diff_p actual &&
... the patch output of "git diff", and
> git diff --summary >actual &&
... the summary part, and
Show 12 quoted lines
> - echo " create mode 100644 new-ita" >expected && > - test_cmp expected actual && > - git diff --cached --summary >actual2 && > - test_must_be_empty actual2 > -' > + test_cmp expect.diff_s actual && > + > + git diff-files -p >actual && > + test_cmp expect.diff_p actual && > > + git diff-files --abbrev >actual && > + test_cmp expect.diff_a actual &&
... the same for "diff-files" and
> + git diff --cached >actual &&
... "diff -cached" are all checked.
Looking good.
Show 7 quoted lines
> + test_must_be_empty actual > +' > > test_expect_success '"diff HEAD" includes ita as new files' ' > git reset --hard && > -- > 2.27.0