#!/bin/bash set -eu set -o pipefail name="$1" f1="$2" f2="$5" name1="a/$name" name2="b/$name" if diff "$f1" "$f2" >/dev/null then exit 0 fi exif() { local b=$(basename "$1") local d=$(mktemp -t "$b") exiftool "$1" | grep -v "File Name" | \ grep -v "Directory" | \ grep -v "File Inode Change" | \ grep -v "File Modification Date/Time" | \ grep -v "File Permissions" \ >"$d" echo "$d" } diff_clean_names() { diff -u "$1" --label "$name1" "$2" --label "$name2" || true } if which -s exiftool then d1=$(exif "$f1") d2=$(exif "$f2") diff_clean_names "$d1" "$d2" else diff_clean_names "$f1" "$f2" fi if [ -z "${GIT_DIFF_IMAGE_ENABLED-}" ] || \ ! which -s compare || \ ! which -s montage then exit 0 fi if compare "$f1" "$f2" /dev/null then exit 0 fi bn=$(basename "$f1") destfile=$(mktemp -t "$bn").png compare "$f1" "$f2" png:- | \ montage -geometry +4+4 "$f1" - "$f2" png:- >"$destfile" 2>/dev/null || true open "$destfile"