blob: b0c778cd11bfedb6602028de44a80264807e11e7 (
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
|
#!/bin/bash
# Author: xezrunner (github.com/xezrunner)
# Credit: DustinGadal on r/Jai
# https://www.reddit.com/r/Jai/comments/jp0vjy/nocheckin_behavior_in_gitsourcetree/gbfhzd1/
# Required programs/utilities for default behavior (as-is):
# git, grep, xargs
# This pre-commit hook/script checks for the existence of the word "$SEARCH_TARGET"
# in your *staged* source files, then aborts the commit if any matches were found.
# It also shows where you have them inside the file.
SEARCH_TARGET="nocheckin"
CL_BRED='\e[1;31m'
CL_NONE='\e[0m'
MESSAGE_0="${CL_BRED}Error:${CL_NONE} $SEARCH_TARGET(s) were found in "
MESSAGE_1="file(s) - ${CL_BRED}ignoring commit:${CL_NONE}"
SEARCH_CMD="git diff --staged -i --diff-filter=d --name-only -G $SEARCH_TARGET --relative $PWD"
GREP_CMD="grep -H $SEARCH_TARGET -n --color=always" # <filename>:line******
# Get the amount of files that we found the search target in.
# I use 'wc -l' (line count of command output) for this:
STATUS=$($SEARCH_CMD | wc -l)
if ((STATUS > 0)); then
echo -e "$MESSAGE_0" "$STATUS" "$MESSAGE_1";
($SEARCH_CMD | xargs "$GREP_CMD");
exit 1;
fi
|