Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions diff-no-index.c
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,8 @@ static int queue_diff(struct diff_options *o, const struct git_hash_algo *algop,
mode1 = 0;
}
/* emit that file */
if (o->flags.reverse_diff)
SWAP(d1, d2);
diff_queue(&diff_queued_diff, d1, d2);

/* and then let the entire directory be created or deleted */
Expand Down
18 changes: 18 additions & 0 deletions t/t4053-diff-no-index.sh
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,24 @@ test_expect_success 'turning a file into a directory' '
)
'

test_expect_success 'reverse diff when turning a file into a directory' '
(
cd non/git &&
printf "A\td/sub\nD\te/sub/file\n" >expect &&
test_expect_code 1 git diff --no-index -R --name-status d e >actual &&
test_cmp expect actual
)
'

test_expect_success 'reverse diff when turning a directory into a file' '
(
cd non/git &&
printf "D\td/sub\nA\te/sub/file\n" >expect &&
test_expect_code 1 git diff --no-index -R --name-status e d >actual &&
test_cmp expect actual
)
'

test_expect_success 'diff from repo subdir shows real paths (explicit)' '
echo "diff --git a/../../non/git/a b/../../non/git/b" >expect &&
test_expect_code 1 \
Expand Down
Loading