From 6e7aab39cced00eae03040753c85527aab573319 Mon Sep 17 00:00:00 2001 From: "David De La Harpe Golden (Squared Financial)" Date: Thu, 31 May 2012 18:27:06 +0100 Subject: Preserve unmanaged ignore file entries on uninit (#673996) Signed-off-by: David De La Harpe Golden (Squared Financial) --- uninit.d/01prompt | 2 +- uninit.d/50vcs-uninit | 34 +++++++++++++++++++++++++++++++++- 2 files changed, 34 insertions(+), 2 deletions(-) (limited to 'uninit.d') diff --git a/uninit.d/01prompt b/uninit.d/01prompt index 07f2e41..8b43937 100755 --- a/uninit.d/01prompt +++ b/uninit.d/01prompt @@ -3,7 +3,7 @@ set -e if [ "$1" != "-f" ]; then echo "** Warning: This will DESTROY all recorded history for $ETCKEEPER_DIR," - echo "** including the $VCS repository and ignore file." + echo "** including the $VCS repository." echo "" printf "Are you sure you want to do this? [yN] " read answer diff --git a/uninit.d/50vcs-uninit b/uninit.d/50vcs-uninit index eb9f13a..165d415 100755 --- a/uninit.d/50vcs-uninit +++ b/uninit.d/50vcs-uninit @@ -19,6 +19,38 @@ managed_by_etckeeper="managed by etckeeper" if ! grep -q "$managed_by_etckeeper" "$file"; then echo "etckeeper: "$file" does not contain \"$managed_by_etckeeper\" comment; not removing" + exit 0 else - rm -f $file + realfile="$file" + if [ -n "`type -p tempfile`" ]; then + tempfile="tempfile" + elif [ -n "`type -p mktemp`" ]; then + tempfile="mktemp" + else + echo "etckeeper warning: can't find tempfile or mktemp" >&2 + exit 1 + fi + file=$($tempfile) + otherentries= + skipping= + while read line; do + if echo "$line" | grep -q "$managed_by_etckeeper"; then + if [ ! "$skipping" ]; then + skipping=1 + else + skipping= + fi + elif [ ! "$skipping" ]; then + echo "$line" >> "$file" + otherentries=1 + fi + done <"$realfile" + + if [ "$otherentries" ]; then + echo "etckeeper: "$realfile" nonempty after \"$managed_by_etckeeper\" section removal; preserving other entries" + mv -f "$file" "$realfile" + else + rm -f "$file" + rm -f "$realfile" + fi fi -- cgit v1.2.3