summaryrefslogtreecommitdiff
path: root/pre-commit.d/30store-metadata
diff options
context:
space:
mode:
Diffstat (limited to 'pre-commit.d/30store-metadata')
-rwxr-xr-xpre-commit.d/30store-metadata25
1 files changed, 25 insertions, 0 deletions
diff --git a/pre-commit.d/30store-metadata b/pre-commit.d/30store-metadata
new file mode 100755
index 0000000..959e714
--- /dev/null
+++ b/pre-commit.d/30store-metadata
@@ -0,0 +1,25 @@
+#!/bin/sh
+set -e
+
+if [ "$VCS" = git ] || [ "$VCS" = hg ]; then
+ # 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
+
+ if [ "$VCS" = git ]; then
+ git add .metadata
+ elif [ "$VCS" = hg ]; then
+ hg add .metadata
+ fi
+ fi
+fi