Added.
This commit is contained in:
64
git_diff_image
Executable file
64
git_diff_image
Executable file
@ -0,0 +1,64 @@
|
||||
#!/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"
|
Reference in New Issue
Block a user