When upgrading Ubuntu (and probably other *nixes), the upgrade process will show a diff of changed configuration files and ask whether I'd like to replace them, keep the old version, or manually merge them. I couldn't find any such programs with Google or searching through the Ubuntu packaging documentation. Do you know of any such programs which have the following features?
- Few or no dependencies (ideally a single shell script).
- Shell only (ideally without curses).
- Does not try to be "clever," for example by automatically merging.
Edit: I've written this small thing to do some preliminary checks and ask the user what to do, but it's not very flexible or nice:
for path
do
if [ ! -e "${path}.new" ]
then
# No new revision; skip
continue
fi
if [[ $(diff "${path}"{,.new} | grep '^[<>]' | grep -v '^[<>][[:space:]]*\(#\|START=\)' | wc -l) -eq 0 ]]
then
# No interesting lines; skip
continue
fi
clear
diff -u "${path}"{,.new}
unset action
while [[ ! "${action-}" =~ ^[sr]$ ]]
do
echo "Do you want to replace $path with ${path}.new?"
read -s -n 1 -p $'[s]kip, [r]eplace: \n' action
done
case "$action" in
s)
continue
;;
r)
cp -v "${path}"{,.new}
;;
*)
echo "Invalid action ${action}!"
exit 2
esac
done


/etc, but it doesn't record upstream versions, which means you can't go merges. – Gilles Nov 3 '11 at 22:45