From bbc4dc023152fea97c1fa7d338417d1b3f9a1607 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Thu, 13 Jan 2011 14:11:54 -0400 Subject: Rewrote 50git-rm This avoids using git ls-files, and thus avoids encoding problems with filenames. Using git add . -u stages all deleted files for deletion. It also avoids the problem with git rm deleting empty directories. It might be better to just use git commit -a, but I've taken the conservative approach. There are a few other git ls-files uses in etckeeper that I have not fixed, but they are only shown to the user, and shouldn't cause a crash as this did. Unfortunatly, git does expose the nasty C-style encoding of such characters in filenames to the user all over (eg, git commit, git log ..), so fixing etckeeper to not also expose them is probably a waste of time. And core.quotepath can be unset by users who want to clean that up. Bug report: https://bugzilla.altlinux.org/show_bug.cgi?id=24903 --- commit.d/40git-rm | 25 +++---------------------- debian/changelog | 7 +++++++ 2 files changed, 10 insertions(+), 22 deletions(-) diff --git a/commit.d/40git-rm b/commit.d/40git-rm index 26f492a..ae70e1f 100755 --- a/commit.d/40git-rm +++ b/commit.d/40git-rm @@ -1,27 +1,8 @@ #!/bin/sh set -e -IFS=' -' - if [ "$VCS" = git ] && [ -d .git ]; then - for file in $(git ls-files --deleted); do - 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 + if ! git add . -u; then + echo "etckeeper warning: git add -u failed" >&2 + fi fi diff --git a/debian/changelog b/debian/changelog index 994f9f5..394d4d5 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +etckeeper (0.52) UNRELEASED; urgency=low + + * Rewrote 50git-rm to avoid using git ls-files, and thus avoid encoding + problems with filenames. + + -- Joey Hess Thu, 13 Jan 2011 14:07:21 -0400 + etckeeper (0.51) unstable; urgency=low * Updated Vietnamese translation of debconf templates. Closes: #601921 -- cgit v1.2.3