summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xcommit.d/40git-rm16
-rw-r--r--debian/changelog7
2 files changed, 20 insertions, 3 deletions
diff --git a/commit.d/40git-rm b/commit.d/40git-rm
index d2c51c2..26f492a 100755
--- a/commit.d/40git-rm
+++ b/commit.d/40git-rm
@@ -6,8 +6,22 @@ IFS='
if [ "$VCS" = git ] && [ -d .git ]; then
for file in $(git ls-files --deleted); do
- if [ ! -d "$file" ]; then
+ if [ ! -d "$file" ]; then
+ # git removes directories when the last file
+ # in them is removed, but empty directories
+ # may be significant in /etc. Touch a flag file
+ # to prevent git from removing the directory.
+ dir="$(dirname "$file")"
+ flagfile=""
+ if [ -d "$dir" ] &&
+ [ -n "$(find "$dir" -maxdepth 0 -empty)" ]; then
+ flagfile="$dir/.etckeeper-keep-empty"
+ touch "$flagfile"
+ fi
git rm --quiet "$file"
+ if [ -n "$flagfile" ]; then
+ rm -f "$flagfile"
+ fi
fi
done
fi
diff --git a/debian/changelog b/debian/changelog
index af9b501..968e1d7 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,8 +1,11 @@
-etckeeper (0.26) UNRELEASED; urgency=low
+etckeeper (0.26) unstable; urgency=low
* Add Japanese debconf translation. Closes: #512869
+ * Prevent git from removing a directory when the last file in it
+ has been removed, but the directory is left existing and empty,
+ by touching a flag file before calling git rm. Closes: 513006
- -- Joey Hess <joeyh@debian.org> Sat, 24 Jan 2009 12:35:29 -0500
+ -- Joey Hess <joeyh@debian.org> Sun, 25 Jan 2009 13:55:56 -0500
etckeeper (0.25) unstable; urgency=low