Почему мой мерзавец вдруг волшебным образом способен показывать текстовые различия для файлов PDF? - PullRequest
0 голосов
/ 17 января 2019

У меня на компьютере с Windows 10 установлена ​​версия git 2.17.0.windows.1. Насколько я знаю, git не должен быть в состоянии различать pdf файлы из коробки. Я всегда ожидал, что сообщение diff просто скажет что-то вроде «Двоичные файлы a.pdf и b.pdf отличаются».

Поэтому я был удивлен, увидев, как консоль распечатала это однажды в репозитории с обновленным pdf-файлом:

diff --git a/assign6.pdf b/assign6.pdf
index 6e6e292..cf8f0bc 100644
--- a/assign6.pdf
+++ b/assign6.pdf
@@ -6,7 +6,7 @@

                            Late Date: NO LATE

-                                               November 10, 2018
+                                               November 26, 2018

 This assignment introduces tasks with public members, direct communication and high-level techniques for structuring
 complex interactions among tasks (versus monitor and semaphore structuring approaches). Use it to become familiar

Я знаю, что есть способ показать читаемые человеком различия для двоичных файлов , используя параметр textconv в атрибутах gitconfig и diff для определенных расширений файлов в атрибутах gitattributes, но я, конечно, ничего не сделал как это для моего компьютера. Я просто установил git с помощью программы установки exe, и с тех пор я не изменил никаких настроек конфигурации.

Вот что git config --list показывает, находясь внутри этой папки:

core.symlinks=false
core.autocrlf=false
core.fscache=true
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
help.format=html
rebase.autosquash=true
http.sslcainfo=C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt
http.sslbackend=openssl
diff.astextplain.textconv=astextplain
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
credential.helper=manager
user.email={{super secret email}}
user.name={{super secret username}}
core.pager=less
core.autocrlf=false
core.whitespace=cr-at-eol
color.ui=auto
core.repositoryformatversion=0
core.filemode=false
core.bare=false
core.logallrefupdates=true
core.symlinks=false
core.ignorecase=true
remote.origin.url={{super secret url}}
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master

Сначала я подумал, что это была какая-то новая необычная функция, которая была недавно добавлена ​​в git, но когда я попробовал diff на машине с Ubuntu 16.04 с версией git 2.19.0, консоль распечатала следующее:

diff --git a/assign6.pdf b/assign6.pdf
index 6e6e292..cf8f0bc 100644
Binary files a/assign6.pdf and b/assign6.pdf differ

Так ... не похоже?

Тогда откуда происходит это магическое поведение единорога в формате pdf? Где это настроено?

1 Ответ

0 голосов
/ 17 января 2019

С Git для Windows 2.18 упоминает

Исправлен diff-фильтр для файлов .pdf.

Естественно, что в 2.17 был включен diff-фильтр для pdf.
Вы можете увидеть его настройки в git-for-windows / build-extra / .

...