diff --no-index: refuse to compare stdin to a directory
When the user runs
git diff --no-index file directory
we follow the behavior of POSIX diff and rewrite the arguments as
git diff --no-index file directory/file
Doing that when "file" is "-" (which means "read from stdin") does not
make sense so we should error out if the user asks us to compare "-" to
a directory. This matches the behavior of GNU diff and diff on *BSD.
Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
a9e066fa63
commit
498198453d
@@ -218,11 +218,13 @@ static void fixup_paths(const char **path, struct strbuf *replacement)
|
||||
{
|
||||
unsigned int isdir0, isdir1;
|
||||
|
||||
if (path[0] == file_from_standard_input ||
|
||||
path[1] == file_from_standard_input)
|
||||
return;
|
||||
isdir0 = is_directory(path[0]);
|
||||
isdir1 = is_directory(path[1]);
|
||||
isdir0 = path[0] != file_from_standard_input && is_directory(path[0]);
|
||||
isdir1 = path[1] != file_from_standard_input && is_directory(path[1]);
|
||||
|
||||
if ((path[0] == file_from_standard_input && isdir1) ||
|
||||
(isdir0 && path[1] == file_from_standard_input))
|
||||
die(_("cannot compare stdin to a directory"));
|
||||
|
||||
if (isdir0 == isdir1)
|
||||
return;
|
||||
if (isdir0) {
|
||||
|
||||
Reference in New Issue
Block a user