From 76dc563df1afffe55a516714577dafcfb09952bb Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Sun, 25 Jan 2009 14:30:36 -0500 Subject: 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 --- commit.d/40git-rm | 16 +++++++++++++++- debian/changelog | 7 +++++-- 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 Sat, 24 Jan 2009 12:35:29 -0500 + -- Joey Hess Sun, 25 Jan 2009 13:55:56 -0500 etckeeper (0.25) unstable; urgency=low -- cgit v1.2.3