Etckeeper warning because of special files #1

Open
bessarabov opened this Issue Sep 15, 2010 · 5 comments

Projects

None yet

4 participants

@bessarabov

I'm using etckeeper and it works great except for one thing. It shows errors when trying to commit:

etckeeper warning: special files could cause problems with git:
./sv/project_a/supervise/ok
./sv/project_a/supervise/control

As I understood this is because of file pre-commit.d/20warn-special-file.I've simply deleted it and after that I have no warnings. But I'm sure this is not the perfect solution =)

By the way, this behaviour is described in http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=529253

Owner

What are those files? Pipes?
Perhaps you can simply ignore them by creating a .gitignore?

Note: I am not the original author of etckeeper, this is just a fork I create to incorporate a few changes that now have been merged upstream. http://joey.kitenet.net/code/etckeeper/ is probably the site you are looking for :-)

Yes, that files are pipes:

$ sudo ls -ls /etc/sv/project_a/supervise/control
0 prw------- 1 root root 0 2010-08-18 15:05 /etc/sv/project_a/supervise/control

I also thought about .gitignore. I've added that files to .gitignore, but the problem did't disappear.

Thank you for the information that you are not the original author. I've found his email and send him message about this problem.

I think that we should leave this issue unsolved. You never know, maybe someone will fork this project and pull the solution. =)

Did someone find a solution for this issue? It is really annoying to get those warning every night, but I guess you know this problem =).

stucki commented Oct 9, 2013

The bug is fixed in etckeeper 0.55. The following patch solved it for me on Ubuntu 10.04 (derived from upstream commit, see joeyh/etckeeper@ad3fbb8

diff --git a/cron.daily/etckeeper b/cron.daily/etckeeper
index f0e71b2..91a5bc3 100755
--- a/cron.daily/etckeeper
+++ b/cron.daily/etckeeper
@@ -7,6 +7,8 @@ if [ -x /usr/sbin/etckeeper ] && [ -e /etc/etckeeper/etckeeper.conf ]; then
                        hostname=`hostname -f 2>/dev/null || hostname`
                        export HGUSER=cron@$hostname
                fi
+               AVOID_SPECIAL_FILE_WARNING=1
+               export AVOID_SPECIAL_FILE_WARNING
                if etckeeper unclean; then
                        etckeeper commit "daily autocommit" >/dev/null
                fi
diff --git a/etckeeper/etckeeper.conf b/etckeeper/etckeeper.conf
index f810870..2d60a11 100644
--- a/etckeeper/etckeeper.conf
+++ b/etckeeper/etckeeper.conf
@@ -20,6 +20,10 @@ VCS="git"
 # to /etc automatically once per day.
 #AVOID_DAILY_AUTOCOMMITS=1

+# Uncomment the following to avoid special file warning
+# (the option is enabled automatically by cronjob regardless).
+#AVOID_SPECIAL_FILE_WARNING=1
+
 # Uncomment to avoid etckeeper committing existing changes to 
 # /etc before installation. It will cancel the installation,
 # so you can commit the changes by hand.
diff --git a/etckeeper/pre-commit.d/20warn-special-file b/etckeeper/pre-commit.d/20warn-special-file
index 665a3ce..60a6185 100755
--- a/etckeeper/pre-commit.d/20warn-special-file
+++ b/etckeeper/pre-commit.d/20warn-special-file
@@ -3,7 +3,7 @@ set -e

 if [ "$VCS" = git ] || [ "$VCS" = hg ] || [ "$VCS" = bzr ] || [ "$VCS" = darcs ]; then
        special=$(find -not -type d -not -type f -not -type l | grep -v '/\(.git\|.hg\|.bzr\|_darcs\)/') || true
-       if [ -n "$special" ]; then
+       if [ -n "$special" ] && [ -z "$AVOID_SPECIAL_FILE_WARNING" ]; then
                echo "etckeeper warning: special files could cause problems with $VCS:" >&2
                echo "$special" >&2
        fi
stucki commented Oct 9, 2013

And here is the same patch for Debian Squeeze:

diff --git a/cron.daily/etckeeper b/cron.daily/etckeeper
index e83b570..6d7ed45 100755
--- a/cron.daily/etckeeper
+++ b/cron.daily/etckeeper
@@ -5,6 +5,8 @@ if [ -x /usr/sbin/etckeeper ] && [ -e /etc/etckeeper/etckeeper.conf ]; then
    if [ "$AVOID_DAILY_AUTOCOMMITS" != "1" ]; then
        # avoid autocommit if an install run is in progress
        if [ ! -e /var/cache/etckeeper/packagelist.pre-install ]; then
+           AVOID_SPECIAL_FILE_WARNING=1
+           export AVOID_SPECIAL_FILE_WARNING
            if etckeeper unclean; then
                etckeeper commit "daily autocommit" >/dev/null
            fi
diff --git a/etckeeper/etckeeper.conf b/etckeeper/etckeeper.conf
index be8934d..c95f377 100644
--- a/etckeeper/etckeeper.conf
+++ b/etckeeper/etckeeper.conf
@@ -20,6 +20,10 @@ DARCS_COMMIT_OPTIONS="-a"
 # to /etc automatically once per day.
 #AVOID_DAILY_AUTOCOMMITS=1

+# Uncomment the following to avoid special file warning
+# (the option is enabled automatically by cronjob regardless).
+#AVOID_SPECIAL_FILE_WARNING=1
+
 # Uncomment to avoid etckeeper committing existing changes to 
 # /etc before installation. It will cancel the installation,
 # so you can commit the changes by hand.
diff --git a/etckeeper/pre-commit.d/20warn-special-file b/etckeeper/pre-commit.d/20warn-special-file
index f246fb1..00c1222 100755
--- a/etckeeper/pre-commit.d/20warn-special-file
+++ b/etckeeper/pre-commit.d/20warn-special-file
@@ -3,7 +3,7 @@ set -e

 if [ "$VCS" = git ] || [ "$VCS" = hg ] || [ "$VCS" = bzr ] || [ "$VCS" = darcs ]; then
    special=$(find . -not -type d -not -type f -not -type l | grep -v '/\(.git\|.hg\|.bzr\|_darcs\)/') || true
-   if [ -n "$special" ]; then
+   if [ -n "$special" ] && [ -z "$AVOID_SPECIAL_FILE_WARNING" ]; then
        echo "etckeeper warning: special files could cause problems with $VCS:" >&2
        echo "$special" >&2
    fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment