diff --git a/install b/install index 940cf3f5d..425995648 100755 --- a/install +++ b/install @@ -208,11 +208,27 @@ backup_if_exists() { fi } +# diff_if_exists +diff_if_exists() { + src="$1" + dest="$2" + shift 2 + + if [[ -f "$dest" ]]; then + src_explicit_filename="$(dirname "$src")/$(basename "$dest").new" + cp "$src" "$src_explicit_filename" + # print what the existing file $dest would become if $src is copied + diff -u --color=always "$dest" "$src_explicit_filename" || : + rm -f "$src_explicit_filename" + fi +} + # cp_if_different cp_if_different() { if [[ -f "$2" ]] && diff -q "$1" "$2" > /dev/null; then return fi + diff_if_exists "$1" "$2" backup_if_exists "$2" cp "$1" "$2" }