본래 husky로 손쉽게 git hook 관리하기 | Huskyhoochu라는 글에 있던 내용이었습니다. 저 블로그가 갑자기 접속이 안돼서.. 같은 기능을 하는 다른 스크립트를 찾아 제 블로그에 백업용으로 올립니다.

#!/bin/sh
# .git/hooks/prepare-commit-msg
#
# Automatically add branch name and branch description to every commit message except merge commit.
# https://stackoverflow.com/a/18739064
#

COMMIT_EDITMSG=$1

addBranchNumber() {
  NAME=$(git branch | grep '*' | sed 's/* //') 
  ISSUE_NUMBER=`echo $NAME | cut -d '-' -f1`
  DESCRIPTION=$(git config branch."$NAME".description)
  echo "[#$ISSUE_NUMBER] $(cat $COMMIT_EDITMSG)" > $COMMIT_EDITMSG
  if [ -n "$DESCRIPTION" ] 
  then
     echo "" >> $COMMIT_EDITMSG
     echo $DESCRIPTION >> $COMMIT_EDITMSG
  fi 
}

MERGE=$(cat $COMMIT_EDITMSG|grep -i 'merge'|wc -l)

if [ $MERGE -eq 0 ] ; then
  addBranchNumber
fi

브랜치 이름을 '숫자-브랜치이름'형식으로 생성하고 아래 스크립트를 .git/hooks/prepare-commit-msg에 저장한 뒤 실행 가능한 권한(0755 등등)을 부여하고 해당 브랜치에서 git commit을 하면 커밋 메세지에 자동으로 [#숫자]를 추가합니다.

에를들어 브랜치 이름이 1-sample-branch라면, git commit을 할 때

[#1] 
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch 1-sample-branch
# Your branch is up to date with 'origin/1-sample-branch'.
#
# Changes to be committed:

이런식으로 자동으로 [#1]이 붙습니다.


구글의 저장된 페이지로도 접속이 안 됐는데, 브라우저에서 javascript를 disable하고 접속하니 보입니다.

이것도 언제 막힐지 몰라 pdf로 박제했습니다.


다른 브라우저에는 접속이 잘 되고, 제 맥의 사파리에서만 접속이 안 되는 것 같습니다. 그래도 누가 제 글이 쓸모가 있어서 pdf로 박제해 놓는다면 기분 좋을테니 그냥 놔두려구요.


아래는 브랜치 이름이 feature/whatever/SOMEAPI-43 같은 형태인 경우, 마지막 슬래쉬 이후의 문자(SOMEAPI-43)만 남기는 스크립트입니다. | sed 's/^.*///'를 추가했습니다.

#!/bin/sh
# .git/hooks/prepare-commit-msg
#
# Automatically add branch name and branch description to every commit message except merge commit.
# https://stackoverflow.com/a/18739064
#

COMMIT_EDITMSG=$1

addBranchNumber() {
  NAME=$(git branch | grep '*' | sed 's/* //' | sed 's/^.*\///') 
  DESCRIPTION=$(git config branch."$NAME".description)
  echo "[$NAME] $(cat $COMMIT_EDITMSG)" > $COMMIT_EDITMSG
  if [ -n "$DESCRIPTION" ] 
  then
     echo "" >> $COMMIT_EDITMSG
     echo $DESCRIPTION >> $COMMIT_EDITMSG
  fi 
}

MERGE=$(cat $COMMIT_EDITMSG|grep -i 'merge'|wc -l)

if [ $MERGE -eq 0 ] ; then
  addBranchNumber
fi