summaryrefslogtreecommitdiff
path: root/uninit.d/50vcs-uninit
diff options
context:
space:
mode:
Diffstat (limited to 'uninit.d/50vcs-uninit')
-rwxr-xr-xuninit.d/50vcs-uninit54
1 files changed, 54 insertions, 0 deletions
diff --git a/uninit.d/50vcs-uninit b/uninit.d/50vcs-uninit
new file mode 100755
index 0000000..06317c5
--- /dev/null
+++ b/uninit.d/50vcs-uninit
@@ -0,0 +1,54 @@
+#!/bin/sh
+set -e
+
+if [ "$VCS" = git ]; then
+ rm -rf .git
+ file=.gitignore
+elif [ "$VCS" = hg ]; then
+ rm -rf .hg
+ file=.hgignore
+elif [ "$VCS" = bzr ]; then
+ rm -rf .bzr
+ file=.bzrignore
+elif [ "$VCS" = darcs ]; then
+ rm -rf _darcs
+ file=.darcsignore
+fi
+
+managed_by_etckeeper="managed by etckeeper"
+
+if ! grep -q "$managed_by_etckeeper" "$file"; then
+ exit 0
+else
+ realfile="$file"
+ if which tempfile >/dev/null 2>&1 || type tempfile >/dev/null 2>&1; then
+ tempfile="tempfile"
+ elif which mktemp >/dev/null 2>&1 || type mktemp >/dev/null 2>&1; then
+ tempfile="mktemp"
+ else
+ echo "etckeeper warning: can't find tempfile or mktemp" >&2
+ exit 1
+ fi
+ file=$($tempfile)
+ otherentries=
+ skipping=
+ while read -r 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
+ mv -f "$file" "$realfile"
+ else
+ rm -f "$file"
+ rm -f "$realfile"
+ fi
+fi