git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2] diff-files: treat "i-t-a" files as "not-in-index"

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
Jun 23, 2020, 15:17 UTC
Message-ID
<nycvar.QRO.7.76.6.2006231714450.54@tvgsbejvaqbjf.bet>
In-Reply-To
<20200620163845.871-1-shrinidhi.kaushik@gmail.com>
Hi Srinidhi,
On Sat, 20 Jun 2020, Srinidhi Kaushik wrote:
Show 20 quoted lines
> diff --git a/t/t2203-add-intent.sh b/t/t2203-add-intent.sh
> index 5bbe8dcce4..8a5d55054f 100755
> --- a/t/t2203-add-intent.sh
> +++ b/t/t2203-add-intent.sh
> @@ -232,17 +232,54 @@ test_expect_success 'double rename detection in status' '
>  	)
>  '
>
> -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 &&
> -	echo new >new-ita &&
> -	git add -N new-ita &&
> +	: >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) &&
So this is the hash of the empty tree object, and...
Show 20 quoted lines
> +
> +	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

... here we expect `git diff --raw` to claim that the contents of `empty` and of `non-empty` are actually the empty tree.

The underlying problem is that some time ago, the (already incorrect) empty blob constant was replaced by the empty tree constant, by mistake. I contributed a patch series to fix that, and Cc:ed you you in v2 that I sent out earlier today.

It would be helpful if you reviewed it carefully, as you are already familiar with the code in question.

Thank you, Johannes

Show 31 quoted lines
> +	EOF
> +
> +	git add -N empty not-empty &&
> +
> +	git diff >actual &&
> +	test_cmp expect.diff_p actual &&
> +
>  	git diff --summary >actual &&
> -	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 &&
> +
> +	git diff --cached >actual &&
> +	test_must_be_empty actual
> +'
>
>  test_expect_success '"diff HEAD" includes ita as new files' '
>  	git reset --hard &&
> --
> 2.27.0
>
>
Previous: Junio C Hamano
Message 12 of 12 in “diff-files: treat "i-t-a" files as "not-in-index"”
  1. diff-files: treat "i-t-a" files as "not-in-index"Srinidhi Kaushik, Jun 11, 2020
  2. Junio C HamanoJun 11, 2020
  3. Srinidhi KaushikJun 11, 2020
  4. Srinidhi KaushikJun 18, 2020
  5. Junio C HamanoJun 18, 2020
  6. Junio C HamanoJun 18, 2020
  7. Junio C HamanoJun 18, 2020
  8. Srinidhi KaushikJun 19, 2020
  9. Junio C HamanoJun 19, 2020
  10. diff-files: treat "i-t-a" files as "not-in-index"Srinidhi Kaushik, Jun 20, 2020
  11. Junio C HamanoJun 20, 2020
  12. Johannes SchindelinJun 23, 2020

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.