summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debian/changelog9
-rwxr-xr-xpost-install.d/50vcs-commit22
-rwxr-xr-xpre-install.d/50uncommitted-changes1
3 files changed, 32 insertions, 0 deletions
diff --git a/debian/changelog b/debian/changelog
index 1575d89..e11e941 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,12 @@
+etckeeper (1.14) UNRELEASED; urgency=medium
+
+ * Use debconf for prompting when post-install commit fails, as was
+ already done for pre-install commit. This avoids propigating
+ errors to apt when eg, git is misconfigured and cannot commit.
+ Closes: #760011
+
+ -- Joey Hess <joeyh@debian.org> Thu, 04 Sep 2014 15:41:39 -0400
+
etckeeper (1.13) unstable; urgency=medium
* Ignore check-mk-agent-logwatch's FHS violating
diff --git a/post-install.d/50vcs-commit b/post-install.d/50vcs-commit
index 7710c4a..edd3444 100755
--- a/post-install.d/50vcs-commit
+++ b/post-install.d/50vcs-commit
@@ -1,11 +1,22 @@
#!/bin/sh
set -e
+
+if [ "$1" = "fail-debconf" ]; then
+ . /usr/share/debconf/confmodule
+ db_title etckeeper
+ db_subst etckeeper/commit_failed VCS "$VCS"
+ db_input critical etckeeper/commit_failed || true
+ db_go || true
+ db_reset etckeeper/commit_failed || true
+ exit 0
+fi
pl="/var/cache/etckeeper/packagelist"
if etckeeper unclean; then
message="committing changes in /etc after $HIGHLEVEL_PACKAGE_MANAGER run"
+ set +e
if [ -e $pl.pre-install ]; then
(
echo "$message"
@@ -16,6 +27,17 @@ if etckeeper unclean; then
else
etckeeper commit "$(printf "$message")"
fi
+ status=$?
+ set -e
+
+ if [ "$status" != 0 ]; then
+ if [ -e /usr/share/debconf/confmodule ]; then
+ $0 fail-debconf
+ else
+ echo "error: etckeeper failed to commit changes in /etc using $VCS"
+ exit 1
+ fi
+ fi
fi
if [ -e $pl.pre-install ]; then
diff --git a/pre-install.d/50uncommitted-changes b/pre-install.d/50uncommitted-changes
index d03d0e8..ef3fbf1 100755
--- a/pre-install.d/50uncommitted-changes
+++ b/pre-install.d/50uncommitted-changes
@@ -3,6 +3,7 @@ set -e
if [ "$1" = "fail-debconf" ]; then
. /usr/share/debconf/confmodule
+ db_title etckeeper
db_subst etckeeper/commit_failed VCS "$VCS"
db_input critical etckeeper/commit_failed || true
db_go || true