diff options
author | Joey Hess <joey@kitenet.net> | 2014-09-04 13:53:42 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2014-09-04 13:53:42 -0400 |
commit | 1b70e83dddcafbcbea84fc55a6396e4876a9a0c4 (patch) | |
tree | 0332e952c763afe3a9f3bbab2e11b03fed7ded9d | |
parent | 0d7150577465bb7d5526d34a25a2e75dd6fc09e3 (diff) |
Avoid propigating nonzero exit status of any command called by etckeeper out to the caller. This is to avoid making apt give up because git is misconfigured and cannot commit, or similar. Closes: #760011
I absoltely do not want etckeeper to dive into the rats nest of making git
be able to commit reliably. git commit has about a dozen failure modes, and
it's up to the admin to avoid breaking their system by not giving it a
hostname, or writing a broken ~/.gitconfig, or not giving uid 0 a user
name, etc.
I considered making only apt.conf's etckeeper calls be guarded with ||
true, but this would also need to be done for the other package managers
that can call etckeeper. And it's better to let etckeeper
indicate which script failed, rather than seeing an error message and apt
continuing without an indication of why git commit was being called then.
-rw-r--r-- | debian/changelog | 8 | ||||
-rwxr-xr-x | etckeeper | 5 | ||||
-rw-r--r-- | etckeeper.8 | 4 |
3 files changed, 16 insertions, 1 deletions
diff --git a/debian/changelog b/debian/changelog index 1575d89..ef5039b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +etckeeper (1.14) UNRELEASED; urgency=medium + + * Avoid propigating nonzero exit status of any command called by etckeeper + out to the caller. This is to avoid making apt give up because git is + misconfigured and cannot commit, or similar. Closes: #760011 + + -- Joey Hess <joeyh@debian.org> Thu, 04 Sep 2014 13:49:26 -0400 + etckeeper (1.13) unstable; urgency=medium * Ignore check-mk-agent-logwatch's FHS violating @@ -126,5 +126,8 @@ lsscripts() { } for script in $(lsscripts "$ETCKEEPER_CONF_DIR/$command.d"); do - "$script" "$@" + if ! "$script" "$@"; then + echo "etckeeper failed running $script" >&1 + exit 0 + fi done diff --git a/etckeeper.8 b/etckeeper.8 index 62ae976..7ac077f 100644 --- a/etckeeper.8 +++ b/etckeeper.8 @@ -64,6 +64,10 @@ prompting.) /etc/etckeeper also contains directories containing the programs that are run for each of the above commands. +.SH EXIT STATUS +If the etckeeper command fails to run for some reason, etckeeper will show +what failed, but still exit 0. This is to avoid breaking things like apt +that call etckeeper. .SH ENVIRONMENT VARIABLES ETCKEEPER_CONF_DIR path to configuration directory instead of default /etc/etckeeper. .SH SEE ALSO |