#!/bin/sh set -e if [ "$VCS" = git ] && [ ! -e .gitignore ]; then file=.gitignore elif [ "$VCS" = hg ] && [ ! -e .hgignore ]; then file=.hgignore elif [ "$VCS" = bzr ] && [ ! -e .bzrignore ]; then file=.bzrignore elif [ "$VCS" = darcs ] && [ ! -e .darcsignore ]; then file=.darcsignore fi if [ -z "$file" ] || [ -e "$file" ]; then exit 0 fi nl() { echo >>$file } comment() { comment="$1" echo "# $comment" >>$file } ignore() { glob="$1" case "$VCS" in git|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" >> $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;' )" echo "$glob" >> $file esac } 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-*" 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" ]; then comment "new and old versions of conffiles, stored by pacman" ignore "*.pacnew" ignore "*.pacorig" ignore "*.pacsave" nl fi 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 mtab ignore .pwd.lock ignore network/run ignore adjtime ignore lvm/cache nl comment "editor backup files" ignore "*~" nl