diff options
author | Mathieu Clabaut <mathieu.clabaut@gmail.com> | 2007-12-21 15:47:30 -0600 |
---|---|---|
committer | Joey Hess <joey@kodama.kitenet.net> | 2008-01-03 19:53:46 -0500 |
commit | f82235032f162aae0bb08828d45c6306e60dcd29 (patch) | |
tree | a4479471b8b8c91903e1ceaf54dfea42e3457a4a /git/pre-commit.d | |
parent | 631af60701ca747861d67a19d431005c7d45d6be (diff) |
hg and git subrepo creation (hg is for now a copy of git)
Diffstat (limited to 'git/pre-commit.d')
-rw-r--r-- | git/pre-commit.d/20store-empty-directory | 19 | ||||
-rw-r--r-- | git/pre-commit.d/20warn-hardlinks | 7 | ||||
-rw-r--r-- | git/pre-commit.d/20warn-special-file | 9 | ||||
-rw-r--r-- | git/pre-commit.d/30store-metadata | 18 | ||||
-rw-r--r-- | git/pre-commit.d/README | 2 |
5 files changed, 55 insertions, 0 deletions
diff --git a/git/pre-commit.d/20store-empty-directory b/git/pre-commit.d/20store-empty-directory new file mode 100644 index 0000000..e0f9538 --- /dev/null +++ b/git/pre-commit.d/20store-empty-directory @@ -0,0 +1,19 @@ +#!/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 + +if [ -e .etckeeper ]; then + egrep -v '^mkdir ' .etckeeper > .etckeeper.new || true +fi +find -type d -empty | grep -v /.git/ | sort | + sed -e "s/^/mkdir -p '/" -e "s/\$/'/" >> .etckeeper.new + +if [ ! -e .etckeeper ] || ! cmp -s .etckeeper .etckeeper.new ; then + mv -f .etckeeper.new .etckeeper + git add .etckeeper +else + rm -f .etckeeper.new +fi diff --git a/git/pre-commit.d/20warn-hardlinks b/git/pre-commit.d/20warn-hardlinks new file mode 100644 index 0000000..3dd7a96 --- /dev/null +++ b/git/pre-commit.d/20warn-hardlinks @@ -0,0 +1,7 @@ +#!/bin/sh +set -e +hardlinks=$(find -type f -not -links 1 | grep -v /.git/) || true +if [ -n "$hardlinks" ]; then + echo "etckeeper warning: hardlinked files could cause problems with git:" >&2 + echo "$hardlinks" >&2 +fi diff --git a/git/pre-commit.d/20warn-special-file b/git/pre-commit.d/20warn-special-file new file mode 100644 index 0000000..cb4d019 --- /dev/null +++ b/git/pre-commit.d/20warn-special-file @@ -0,0 +1,9 @@ +#!/bin/sh +set -e +special=$(find -not -type d -not -type f -not -type l | grep -v /.git/) || true +if [ -n "$special" ]; then + echo "etckeeper warning: special files could cause problems with git:" >&2 + echo "$special" >&2 +fi + +true diff --git a/git/pre-commit.d/30store-metadata b/git/pre-commit.d/30store-metadata new file mode 100644 index 0000000..b878abd --- /dev/null +++ b/git/pre-commit.d/30store-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 diff --git a/git/pre-commit.d/README b/git/pre-commit.d/README new file mode 100644 index 0000000..051d094 --- /dev/null +++ b/git/pre-commit.d/README @@ -0,0 +1,2 @@ +This is run by a git pre-commit hook before committing changes to the +repository. This can be used for storing metadata, and for sanity checks. |