git diff файла не выдает жалоб, если путь к файлу неверен - PullRequest
0 голосов
/ 29 августа 2018

Я знаю, что в git я могу получить git diff файла, выполнив:

git diff [--options] <commit> <commit> [--] [<path>...]

В моем примере:

git diff commit1 commit2 -- dirThatDoesNotExist\myFileThatDoesNotExist.txt

Если путь (myFileThatDoesNotExist.txt) - это файл, который не существует, мне кажется, что я не получаю сообщение об ошибке или любое другое указание от git, просто нет ответа.

Получение пустого ответа неотличимо от отсутствия изменений / различий в действительном файле.

Как получить сообщение об ошибке, указывающее, что путь к файлу указан неверно, или каким-либо другим способом отличить неверное имя файла от отсутствия изменений / различий в действительном имени файла?

1 Ответ

0 голосов
/ 29 августа 2018

Вы можете проверить, существует ли файл в коммите, по git rev-parse commit:path.

git rev-parse commit1:myFileThatDoesNotExist.txt

Если myFileThatDoesNotExist.txt существует в commit1, команда возвращает значение блоба sha1 с кодом завершения 0. Если этого не происходит, commit1:myFileThatDoesNotExist.txt возвращается буквально с кодом выхода 128, и сообщение об ошибке помещается в стандарт ошибка, сказав, что fatal: Path 'myFileThatDoesNotExist.txt' does not exist in 'commit1'

if git rev-parse commit1:myFileThatDoesNotExist.txt || git rev-parse commit2:myFileThatDoesNotExist.txt;then
    # exist in one of the two commits or in both
    git diff commit1 commit2 -- myFileThatDoesNotExist.txt
else
    # exist in neither, do something else
    :
fi
...