Add pre-commit action before git commit to prevent me from getting in trouble.
初心者がAWSに手を出して$6,000請求されて、泣きそうになったお話 を読んで、わたしもきっとやるだろうなぁと思い、とりあえず自動でチェックしてもらうスクリプトだけでも入れておこうと思いました。
1. Git Templates
$ git config --global init.templatedir '~/.git-templates'
これによって各プロジェクトの.git/以下に~/.git-templates以下のファイルがコピられます。git initしたときに。
2. Global Hooksの為のディレクトリ作成
$ mkdir -p ~/.git-templates/hooks
3. ~/.git-templates/hooks/以下にコードを書きます。
#!/bin/sh if git rev-parse --verify HEAD >/dev/null 2>&1 then against=HEAD else # Initial commit: diff against an empty tree object EMPTY_TREE=$(git hash-object -t tree /dev/null) against=$EMPTY_TREE fi # Redirect output to stderr. exec 1>&2 # Check changed files for an AWS keys FILES=$(git diff --cached --name-only $against) if [ -n "$FILES" ]; then KEY_ID=$(grep -E --line-number '[^A-Z0-9][A-Z0-9]{20}[^A-Z0-9]' $FILES) KEY=$(grep -E --line-number '[^A-Za-z0-9/+=][A-Za-z0-9/+=]{40}[^A-Za-z0-9/+=]' $FILES) if [ -n "$KEY_ID" ] || [ -n "$KEY" ]; then exec < /dev/tty # Capture input echo "=========== Possible AWS Access Key IDs ===========" echo "${KEY_ID}" echo "" echo "=========== Possible AWS Secret Access Keys ===========" echo "${KEY}" echo "" while true; do read -p "[AWS Key Check] Possible AWS keys found. Commit files anyway? (y/N) " yn if [ "$yn" = "" ]; then yn='N' fi case $yn in [Yy] ) exit 0;; [Nn] ) exit 1;; * ) echo "Please answer y or n for yes or no.";; esac done exec <&- # Release input fi fi # Normal exit exit 0
4. 実行可能にする
$ chmod a+x ~/.git-templates/hooks/post-commit
5. 上記を対応させたいプロジェクトでgit initします。
$ git init
https://coderwall.com/p/jp7d5q/create-a-global-git-commit-hook https://gist.github.com/DmZ/3a99d829f17af383712b