summaryrefslogtreecommitdiffstats
path: root/code_format/git-hooks/remove-client-side-hooks
blob: 5d9bd9e7c60988cf296d85e32caae80e5d3685a9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#!/bin/bash

# Remove client side hooks from all TDE local repositories

# Note: this is <tdehome>/scripts/code_format/git-hooks
SCRIPT_DIR=`dirname $(readlink -f "$0")`
TDE_DIR="${SCRIPT_DIR}/../../.."

if [[ ! -f "${TDE_DIR}/.gitmodules" ]]; then
  echo " --- Unable to find repository list (.gitmodules). Aborting."
  exit 1
fi

sed -n "s|^\[submodule \"\([^\"]*\)\"\]$|\1|p" <"${TDE_DIR}/.gitmodules" | \
grep "^main/" | \
while read MODULE; do
  cd "${TDE_DIR}/${MODULE}"
  GIT_COMMON_DIR=`git rev-parse --git-common-dir`
  if [[ "${GIT_COMMON_DIR}" == ".git" ]]; then
    # Normal repository
    HOOK_DIR="${TDE_DIR}/${MODULE}/${GIT_COMMON_DIR}/hooks"
  else
    # Worktree repository
    HOOK_DIR="${GIT_COMMON_DIR}/hooks"
  fi
  # Check hook folder exists
  if [ ! -d "${HOOK_DIR}" ]; then
    echo " --- Unable to find the hook folder for the repository ${MODULE}"
    echo "     Skipping module."
    continue
  fi
  # Check whether the pre-commit hook exists
  if [ ! -e "${HOOK_DIR}/pre-commit" ]; then
    echo " --- Pre-commit hook not found for the repository ${MODULE}"
    echo "     Skipping module."
    continue
  fi
  rm "${HOOK_DIR}/pre-commit"
  if [ ! -e "${HOOK_DIR}/pre-commit" ]; then
    echo "Pre-commit hook removed for the repository ${MODULE}"
  else
    echo " --- Something went wrong when removing the pre-commit hook for the repositoty ${MODULE}"
  fi
done