summaryrefslogtreecommitdiff
path: root/update-ignore.d
diff options
context:
space:
mode:
authorJoey Hess <joeyh@debian.org>2013-07-31 11:33:45 -0400
committerJoey Hess <joeyh@debian.org>2013-07-31 11:33:45 -0400
commitfdeec420b54e252e611c353ce39fe61c924e3e7d (patch)
tree2a1974e6c8cc56263e3903f49ea2a841ea895c6d /update-ignore.d
etckeeper (1.7) unstable; urgency=low
* Fix hilarious typo hardcoding my name. Closes: #718425 # imported from the archive
Diffstat (limited to 'update-ignore.d')
-rwxr-xr-xupdate-ignore.d/01update-ignore205
-rw-r--r--update-ignore.d/README2
2 files changed, 207 insertions, 0 deletions
diff --git a/update-ignore.d/01update-ignore b/update-ignore.d/01update-ignore
new file mode 100755
index 0000000..2659aa6
--- /dev/null
+++ b/update-ignore.d/01update-ignore
@@ -0,0 +1,205 @@
+#!/bin/sh
+set -e
+
+if [ "$VCS" = git ]; then
+ dir=.git
+ file=.gitignore
+elif [ "$VCS" = hg ]; then
+ dir=.hg
+ file=.hgignore
+elif [ "$VCS" = bzr ]; then
+ dir=.bzr
+ file=.bzrignore
+elif [ "$VCS" = darcs ]; then
+ dir=_darcs
+ file=.darcsignore
+else
+ echo "etckeeper: unsupported VCS $VCS" >&2
+ exit 1
+fi
+
+if [ ! -d "$dir" ]; then
+ exit 0
+fi
+
+managed_by_etckeeper="managed by etckeeper"
+
+nl() {
+ echo >>"$file"
+}
+
+comment() {
+ comment="$1"
+ echo "# $comment" >>"$file"
+}
+
+ignore() {
+ glob="$1"
+
+ case "$VCS" in
+ git)
+ # escape "#" in ignores, as otherwise it may
+ # be considered a comment
+ echo "$glob" | sed 's/#/\\#/g' >>"$file"
+ ;;
+ bzr)
+ echo "$glob" >>"$file"
+ ;;
+ hg)
+ # rather than converting the glob to a regexp, just
+ # configure hg to use globs
+ if [ -z "$hg_syntax_printed" ]; then
+ comment "use glob syntax"
+ echo "syntax: glob" >>"$file"
+ nl
+ hg_syntax_printed=1
+ fi
+ echo "$glob" | sed 's/#/\\#/g' >>"$file"
+ ;;
+ darcs)
+ # darcs doesn't understand globs, so we need to
+ # translate them into regexs. Not a complete converter,
+ # but suitable for given globs.
+ if [ "${glob%\*}" != "$glob" ]; then
+ glob="${glob%\*}"
+ else
+ glob="$glob"'($|/)'
+ fi
+ if [ "${glob#\*}" != "$glob" ]; then
+ glob="${glob#\*}"
+ else
+ glob='(^|/)'"$glob"
+ fi
+ glob="$( printf %s $glob | sed -e 's/\./\\./g;s/\*/[^\/]*/g;s/\?/[^\/]/g' )"
+ echo "$glob" >>"$file"
+ esac
+}
+
+writefile () {
+ comment "begin section $managed_by_etckeeper (do not edit this section by hand)"
+ nl
+
+ if [ "$VCS" = darcs ]; then
+ darcs setpref boringfile .darcsignore
+ fi
+
+ if [ "$LOWLEVEL_PACKAGE_MANAGER" = dpkg ]; then
+ comment "new and old versions of conffiles, stored by dpkg"
+ ignore "*.dpkg-*"
+ comment "new and old versions of conffiles, stored by ucf"
+ ignore "*.ucf-*"
+ nl
+ elif [ "$LOWLEVEL_PACKAGE_MANAGER" = "rpm" ]; then
+ comment "new and old versions of conffiles, stored by apt/rpm"
+ ignore "*.rpm*"
+ nl
+ elif [ "$LOWLEVEL_PACKAGE_MANAGER" = "pacman-g2" -o "$LOWLEVEL_PACKAGE_MANAGER" = "pacman" ]; then
+ comment "new and old versions of conffiles, stored by pacman"
+ ignore "*.pacnew"
+ ignore "*.pacorig"
+ ignore "*.pacsave"
+ nl
+ fi
+
+ comment "old versions of files"
+ ignore "*.old"
+ # Not currently ignored as admins tend to rely on these files.
+ #ignore "passwd-"
+ #ignore "group-"
+ #ignore "shadow-"
+ #ignore "gshadow-"
+ nl
+
+ comment "mount(8) records system state here, no need to store these"
+ ignore blkid.tab
+ ignore blkid.tab.old
+ nl
+
+ comment "some other files in /etc that typically do not need to be tracked"
+ ignore nologin
+ ignore ld.so.cache
+ ignore prelink.cache
+ ignore mtab
+ ignore mtab.fuselock
+ ignore .pwd.lock
+ ignore "*.LOCK"
+ ignore network/run
+ ignore adjtime
+ ignore lvm/cache
+ ignore lvm/backup
+ ignore lvm/archive
+ ignore "X11/xdm/authdir/authfiles/*"
+ ignore ntp.conf.dhcp
+ ignore .initctl
+ ignore "webmin/fsdump/*.status"
+ ignore "webmin/webmin/oscache"
+ ignore "apparmor.d/cache/*"
+ ignore "service/*/supervise/*"
+ ignore "service/*/log/supervise/*"
+ ignore "sv/*/supervise/*"
+ ignore "sv/*/log/supervise/*"
+ ignore "*.elc"
+ ignore "*.pyc"
+ ignore "*.pyo"
+ ignore "init.d/.depend.*"
+ ignore "openvpn/openvpn-status.log"
+ ignore "cups/subscriptions.conf"
+ ignore "cups/subscriptions.conf.O"
+ ignore "fake-hwclock.data"
+ nl
+
+ comment "editor temp files"
+ ignore "*~"
+ ignore ".*.sw?"
+ ignore ".sw?"
+ ignore "#*#"
+ ignore DEADJOE
+
+ nl
+ comment "end section $managed_by_etckeeper"
+}
+
+if [ -e "$file" ]; then
+ if ! grep -q "$managed_by_etckeeper" "$file"; then
+ if [ "$1" != "-a" ]; then
+ echo "etckeeper: "$file" does not contain \"$managed_by_etckeeper\" comment; not updating"
+ exit 1
+ else
+ echo "etckeeper: "$file" exists but does not contain \"$managed_by_etckeeper\" comment; updating"
+ writefile
+ exit 0
+ fi
+ fi
+ realfile="$file"
+ if which tempfile >/dev/null 2>&1 || type -p tempfile >/dev/null 2>&1; then
+ tempfile="tempfile"
+ elif which mktemp >/dev/null 2>&1 || type -p mktemp >/dev/null 2>&1; then
+ tempfile="mktemp"
+ else
+ echo "etckeeper warning: can't find tempfile or mktemp" >&2
+ fi
+ file=$($tempfile)
+ (
+ skipping=
+ while read line; do
+ if echo "$line" | grep -q "$managed_by_etckeeper"; then
+ if [ ! "$skipping" ]; then
+ skipping=1
+ else
+ skipping=
+ writefile
+ fi
+ elif [ ! "$skipping" ]; then
+ echo "$line" >> "$file"
+ fi
+ done
+ if [ "$skipping" ]; then
+ # reached end of file w/o ending block
+ writefile
+ fi
+ ) <"$realfile"
+
+ mv -f "$file" "$realfile"
+else
+ writefile
+fi
diff --git a/update-ignore.d/README b/update-ignore.d/README
new file mode 100644
index 0000000..a573135
--- /dev/null
+++ b/update-ignore.d/README
@@ -0,0 +1,2 @@
+Executable files in this directory are run to update the VCS ignore file,
+or create it if it does not exist.