diff por bildoj en Git

La implicita diff de Git ne montras la ŝanĝojn inter bildoj. Tio estas normala: ĝi ne estas pensita por tio. Tamen estus bonega, se Git montrus la bildajn ŝanĝojn kiel la kodajn, ĉu ne? Almenaŭ io pli bela ol...

$ 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

Io tia...

Tion faris mi per skripto, kiu uzas ImageMagick, por kompari bildojn. Ĉi tie montras mi, kiel vi povas fari la samon.

En distribuoj bazitaj sur Debiano bezonas instali la pakon plenumante...

sudo apt install imagemagick

Poste en dosiero kun permesoj de plenumado en vojo alirebla de la media variablo $PATH skribu la jenan kodon, kiun mi konservas en ~/bin/git-imgdiff en ĉi tiu instruilo:

#!/bin/sh
compare $2 $1 png:- | montage -geometry +4+4 $2 - $1 png:- | display -title "$1" -

Poste diru al Git per la dosiero .gitattributes la dosierfinojn, kiujn vi konsideras kiel bildoj. Se ĝi ne estas, kreu ĝin en la radika dosierujo de Git-projekto aŭ en via $HOME dosierujo kun la jenajn liniojn por la formatoj GIF, PNG kaj JPG, aŭ se la dosiero jam ekzistas, aldonu ilin:

*.gif diff=image
*.jpg diff=image
*.jpeg diff=image
*.png diff=image

Por ke la agordaro de .gitattributes, kiun vi konservis en la $HOME-dosiero, estu uzita por ĉiuj Git-projektoj, vi devas plenumi la jenan komandon:

git config --global core.attributesFile ~/.gitattributes

Nun agordu je Git tiel, por ke ĝi plenumu la antaŭe kreitan skripton, kiam ĝi komparu bildojn:

git config --global diff.image.command '~/bin/git-imgdiff'

Tiel simpla. Vi povas adapti la skripton al viaj bezonoj.

Se al vi sufiĉas scii, kiuj metadatumoj estis ŝanĝitaj, vi povas instali exiftool, por montri ion tian:

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

Tiam legu plu.

Instalu exiftool. En distribuoj bazitaj sur Debiano oni devas plenumi tion:

sudo apt install libimage-exiftool-perl

Poste aldoni jenon al .gitattributes-dosiero.

*.png diff=exif
*.jpg diff=exif
*.gif diff=exif

Fine plenumu...

git config --global diff.exif.textconv exiftool`

En ambaŭ montritajn metodojn vi laŭvole povas ne aldoni --global, por ke la elektita ilo nur apliku al la Git-projekto, kie vi estas laborante.

Mi esperas, ke estas nun pli simpla por vi kontroli la ŝanĝojn de bildoj en projekto.

Komentoj