From 0f97f15a8d183c6b14894f47c40968e92104181d Mon Sep 17 00:00:00 2001 From: Mohammad Akhlaghi Date: Wed, 23 Jan 2019 18:41:55 +0000 Subject: Removing files ending with a ~ in the git checkout hook While editing files, some editors create temporary `~' files that can cause problems in metastore's ability to delete their host directory if its not on the other branch. With this commit, a `find' call was added to the post checkout Git hook to remove such temporary files before metastore is called. Also, some comments were added to both git hooks to make them easier to understand for a beginner. --- reproduce/src/bash/git-post-checkout | 8 ++++++++ reproduce/src/bash/git-pre-commit | 6 ++++++ reproduce/src/make/dependencies.mk | 7 ++++--- 3 files changed, 18 insertions(+), 3 deletions(-) (limited to 'reproduce') diff --git a/reproduce/src/bash/git-post-checkout b/reproduce/src/bash/git-post-checkout index 25dc2ac..e2a0fd0 100644 --- a/reproduce/src/bash/git-post-checkout +++ b/reproduce/src/bash/git-post-checkout @@ -9,8 +9,13 @@ # special characters for the installation location of meta-store so our own # installation is found by Git. +# File containig the metadata. MSFILE=".file-metadata" +# Delete all temporary files +find @TOP_PROJECT_DIR@/ -name "*~" -type f -delete + +# Function to help in reporting a crash. exit_on_fail() { "$@" if [ $? -ne 0 ]; then @@ -19,12 +24,15 @@ exit_on_fail() { fi } +# Check if the metadata file exists. if [ ! -e "$MSFILE" ]; then echo "\"$MSFILE\" missing" >&2 exit 1 fi +# Run metastore. exit_on_fail \ @BINDIR@/metastore -a -m -e -E -q -O @USER@ -G @GROUP@ -f "$MSFILE" +# Return with a success code (0). exit 0 diff --git a/reproduce/src/bash/git-pre-commit b/reproduce/src/bash/git-pre-commit index dbf7dc6..ca28757 100644 --- a/reproduce/src/bash/git-pre-commit +++ b/reproduce/src/bash/git-pre-commit @@ -20,8 +20,10 @@ # git reset HEAD -- .metadata # git checkout HEAD -- .metadata +# File containig the metadata. MSFILE=".file-metadata" +# Function to help in reporting a crash. exit_on_fail() { "$@" if [ $? -ne 0 ]; then @@ -30,6 +32,7 @@ exit_on_fail() { fi } +# Run metastore. exit_on_fail \ @BINDIR@/metastore -O @USER@ -G @GROUP@ -s -f "$MSFILE" @@ -39,12 +42,15 @@ if ! git-ls-tree --name-only HEAD 2>/dev/null | grep -Fqx "$MSFILE"; then @BINDIR@/metastore -O @USER@ -G @GROUP@ -s -f "$MSFILE" fi +# Check if the metadata file exists. if [ ! -e "$MSFILE" ]; then echo "\"$MSFILE\" missing" >&2 exit 1 fi +# Add the metadata file to the Git repository. exit_on_fail \ git-add "$MSFILE" +# Return with a success code (0). exit 0 diff --git a/reproduce/src/make/dependencies.mk b/reproduce/src/make/dependencies.mk index e9023b4..1cc2b00 100644 --- a/reproduce/src/make/dependencies.mk +++ b/reproduce/src/make/dependencies.mk @@ -384,9 +384,10 @@ $(ibdir)/metastore: $(tdir)/metastore-$(metastore-version).tar.gz \ cd $$current_dir if [ -f $@ ]; then for f in pre-commit post-checkout; do - sed -e's|@USER[@]|'$$user'|g' \ - -e's|@GROUP[@]|'$$group'|g' \ - -e's|@BINDIR[@]|$(ibdir)|g' \ + sed -e's|@USER[@]|'$$user'|g' \ + -e's|@GROUP[@]|'$$group'|g' \ + -e's|@BINDIR[@]|$(ibdir)|g' \ + -e's|@TOP_PROJECT_DIR[@]|'$$current_dir'|g' \ reproduce/src/bash/git-$$f > .git/hooks/$$f chmod +x .git/hooks/$$f done -- cgit v1.2.1