From 87cf41f85c187be47f83f9b28d1f3848aaa29fa8 Mon Sep 17 00:00:00 2001 From: Zdenek Crha Date: Wed, 28 Aug 2013 09:43:33 +0200 Subject: Omit files ignored by git from .etckeeper file Add processing of the .gitignore file into filter_ignore() function. The .gitignore content is a list of globs and not regular expressions, so it is not possible to use same approach darcs uses. Instead, we use git commands to generate list of files that exist and need to be excluded as pattern file. --- pre-commit.d/30store-metadata | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/pre-commit.d/30store-metadata b/pre-commit.d/30store-metadata index 03ce475..d9afbe7 100755 --- a/pre-commit.d/30store-metadata +++ b/pre-commit.d/30store-metadata @@ -15,14 +15,23 @@ filter_unknown() { } filter_ignore() { - if [ "$VCS" = darcs ]; then - ignorefile=.darcsignore - fi + case "$VCS" in + darcs) ignorefile=.darcsignore ;; + git) ignorefile=.gitignore ;; + esac - if [ "$VCS" = darcs ] && [ -e "$ignorefile" ]; then + if [ -n "$ignorefile" ] && [ -e "$ignorefile" ]; then patternsfile="$( mktemp -t etckeeper-$VCS.XXXXXXXXXX )" - grep -v '^[[:space:]]*\(#\|$\)' "$ignorefile" > "$patternsfile" || true - grep -Evf "$patternsfile" + case "$VCS" in + darcs) + grep -v '^[[:space:]]*\(#\|$\)' "$ignorefile" > "$patternsfile" || true + grep -Evf "$patternsfile" + ;; + git) + git ls-files --others --ignore --directory > "$ignorefile" || true + grep -Fvf "$patternsfile" + ;; + esac rm -f "$patternsfile" unset patternsfile else @@ -74,7 +83,7 @@ generate_metadata() { # Store things that don't have the default user or group. # Store all file modes, in case the user has an unusual umask. - find $NOVCS \( -type f -or -type d \) -print | sort | perl -ne ' + find $NOVCS \( -type f -or -type d \) -print | filter_ignore | sort | perl -ne ' BEGIN { $q=chr(39) } sub uidname { my $want=shift; -- cgit v1.2.3