[v5,2/2] difftool -d: ensure that intent-to-add files are handled correctly
diff mbox series

Message ID 5f933e852a525d4721b6f3e38ec12abf9c0d1aea.1593638347.git.gitgitgadget@gmail.com
State New
Headers show
  • Fix difftool problem with intent-to-add files
Related show

Commit Message

Matthew Rogers via GitGitGadget July 1, 2020, 9:19 p.m. UTC
From: Johannes Schindelin <johannes.schindelin@gmx.de>

In https://github.com/git-for-windows/git/issues/2677, a `git difftool
-d` problem was reported. The underlying cause was a bug in `git
diff-files --raw` that we just fixed: it reported intent-to-add files
with the empty _tree_ as the post-image OID, when we need to show
an all-zero (or, "null") OID instead, to indicate to the caller that
they have to look at the worktree file.

The symptom of that problem shown by `git difftool` was this:

	error: unable to read sha1 file of <path> (<empty-tree-OID>)
	error: could not write '<filename>'

Make sure that the reported `difftool` problem stays fixed.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
 t/t7800-difftool.sh | 8 ++++++++
 1 file changed, 8 insertions(+)

diff mbox series

diff --git a/t/t7800-difftool.sh b/t/t7800-difftool.sh
index 29b92907e2..524f30f7dc 100755
--- a/t/t7800-difftool.sh
+++ b/t/t7800-difftool.sh
@@ -720,6 +720,14 @@  test_expect_success SYMLINKS 'difftool --dir-diff handles modified symlinks' '
 	test_cmp expect actual
+test_expect_success 'add -N and difftool -d' '
+	test_when_finished git reset --hard &&
+	test_write_lines A B C >intent-to-add &&
+	git add -N intent-to-add &&
+	git difftool --dir-diff --extcmd ls
 test_expect_success 'outside worktree' '
 	echo 1 >1 &&
 	echo 2 >2 &&