From 2ef31bb41f1f04a9d7341e7b2fe683f71e922097 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Mon, 5 Nov 2007 22:49:53 -0500 Subject: store empty directories and restore in etckeeper init While working on this, I had to consider security policies -- is it ok if etckeeper init can run code from the /etc repository? I've decided this should be ok, and documented that it should only be run on trusted repos. Note that metastore could also be exploited by untrusted repos, and of course, note that you're checking out your *** /etc *** so it damn well better be trusted! With that determined, I decided to use a simple shell script to hold the empty directory info and allow them to be easily created. Expanding this for other files git can't represent is a possibility.. --- pre-commit.d/20store-metadata | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100755 pre-commit.d/20store-metadata (limited to 'pre-commit.d/20store-metadata') diff --git a/pre-commit.d/20store-metadata b/pre-commit.d/20store-metadata new file mode 100755 index 0000000..b878abd --- /dev/null +++ b/pre-commit.d/20store-metadata @@ -0,0 +1,18 @@ +#!/bin/sh +set -e + +# Make sure the file is not readable by others, since it can leak +# information about contents of non-readable directories in /etc. +umask 077 + +# ensure the file exists so that it will list its own metadata +if [ ! -e .metadata ]; then + metastore --save +fi + +# metastore doesn't produce the same output file for the same metadata +# everytime, so avoid changing the file if nothing really changed. +if [ ! -z "$(metastore --compare)" ]; then + metastore --save + git add .metadata +fi -- cgit v1.2.3