Стандартный 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,
над которым вы работаете.
Надеюсь, теперь вам будет проще просматривать изменения, внесенные в изображения в рамках проекта.
Комментарии