Стандартный Git diff не показывает различия между изображениями.
Это понятно: он для этого не предназначен. Однако было бы здорово,
если бы Git показывал изменения изображений так же, как изменения кода,
не так ли? По крайней мере, что-то более приятное, чем...
$ git diff
diff --git a/es-ES/images/autobuilder.png b/es-ES/images/autobuilder.png
index 6f5f6eb..6f0dd78 100644
Binary files a/es-ES/images/autobuilder.png and b/es-ES/images/autobuilder.png differ
Примерно так:
Я сделал это с помощью скрипта, который использует библиотеку ImageMagick для сравнения изображений. Вот как можно сделать так же.
В дистрибутивах на базе Debian вам нужно установить этот пакет, запустив...
sudo apt install imagemagick
Затем в файле с разрешением на выполнение по любому пути, доступному
через переменную среды $PATH, напишите следующий код, который я
сохранил в ~/bin/git-imgdiff для этого руководства:
#!/bin/sh
compare $2 $1 png:- | montage -geometry +4+4 $2 - $1 png:- | display -title "$1" -
Теперь укажите Git'у расширения, которые вы хотите считать
изображениями, с помощью файла .gitattributes Если он не существует,
создайте его в корневом каталоге проекта Git или в каталоге $HOME со
следующими строками для форматов GIF, PNG и JPG, или, если файл уже
существует, просто добавьте в них следующее:
*.gif diff=image
*.jpg diff=image
*.jpeg diff=image
*.png diff=image
Чтобы конфигурация .gitattributes, сохраненная в каталоге $HOME,
загрузилась для всех проектов Git, нужно выполнить следующую команду:
git config --global core.attributesFile ~/.gitattributes
Теперь настройте Git на запуск скрипта, который вы создали ранее, при сравнении изображений:
git config --global diff.image.command '~/bin/git-imgdiff'
Видите, всё очень просто. И да, вы можете настроить скрипт под свои нужды.
Если вам просто нужно узнать, какие метаданные изменились, вы можете
установить exiftool, чтобы отобразить что-то вроде этого:
index 6f5f6eb..6f0dd78 100644
--- a/es-ES/images/autobuilder.png
+++ b/es-ES/images/autobuilder.png
@@ -1,21 +1,21 @@
 ExifTool Version Number         : 10.10
-File Name                       : vHB91h_autobuilder.png
-Directory                       : /tmp
-File Size                       : 44 kB
-File Modification Date/Time     : 2020:03:09 02:12:08+01:00
-File Access Date/Time           : 2020:03:09 02:12:08+01:00
-File Inode Change Date/Time     : 2020:03:09 02:12:08+01:00
-File Permissions                : rw-------
+File Name                       : autobuilder.png
+Directory                       : es-ES/images
+File Size                       : 63 kB
+File Modification Date/Time     : 2020:03:09 01:35:22+01:00
+File Access Date/Time           : 2020:03:09 01:35:22+01:00
+File Inode Change Date/Time     : 2020:03:09 01:35:22+01:00
+File Permissions                : rw-rw-r--
 File Type                       : PNG
 File Type Extension             : png
 MIME Type                       : image/png
-Image Width                     : 796
-Image Height                    : 691
+Image Width                     : 794
+Image Height                    : 689
 Bit Depth                       : 8
 Color Type                      : RGB
 Compression                     : Deflate/Inflate
 Filter                          : Adaptive
 Interlace                       : Noninterlaced
-Significant Bits                : 8 8 8
-Image Size                      : 796x691
-Megapixels                      : 0.550
+Background Color                : 255 255 255
+Image Size                      : 794x689
+Megapixels                      : 0.547
Если всё так, читайте дальше.
Установите exiftool. В дистрибутивах, созданных на основе Debian,
вам нужно выполнить эту команду:
sudo apt install libimage-exiftool-perl
Затем добавьте это в файл .gitattributes:
*.png diff=exif
*.jpg diff=exif
*.gif diff=exif
И наконец...
git config --global diff.exif.textconv exiftool`
По желанию, в двух показанных мною способах вы можете не использовать
--global, чтобы выбранный инструмент применялся только к проекту Git,
над которым вы работаете.
Надеюсь, теперь вам будет проще просматривать изменения, внесенные в изображения в рамках проекта.

 
    
Комментарии