You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
995 B
Bash
55 lines
995 B
Bash
#!/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 command -v mktemp >/dev/null; then
|
|
tempfile="mktemp"
|
|
elif command -v tempfile >/dev/null; then
|
|
tempfile="tempfile"
|
|
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
|