-
Git flow - 브랜치 이름 컨벤션, git hook으로 커밋에 이슈 번호 자동 추가프로그래밍/프로그래밍 2021. 12. 18. 22:35반응형
깃깃깃깃갓갓갓갓. 차이가 느껴지는가? 아니? 깃은 갓(신)이다. 깃을 숭배하라!!각설하자.. 멘탈차려!!
브랜치 이름 컨벤션
- main or master
- develop
- feature-{issue_number}-{feature_name}
- release-(version_number)
- Hotfix-(Issue_number)
일반적으로, 이 형식으로 진행된다고 한다.
자세한 것은, git flow naming convention 등으로 검색해보자.
필자는,{issue_number}-{issue_description, feature_name etc..}
의 방식을 택하였다.git hook을 이용한 커밋에 이슈번호 자동추가
git hook은
git폴더/.git/hooks/
에 존재한다.
여기서,prepare-commit-msg
파일을 만들 것이다.주어지는 샘플은 참고용이다. 사용하고자 하면 사용하면 된다.
아래 코드를 git폴더
git폴더/.git/hooks/
에prepare-commit-msg
파일로 만들어주면 된다.
몇가지 방식이 있다.[이슈번호]
방식#!/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
[이슈번호-이슈이름]
방식(사실,feature/branches/1-hello
에서 마지막 슬레시 이후만을 남겨둔다는 설명이 올바르다.)#!/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
위 코드에서는 echo
"[#$NAME] $cat...
을 통하여, 이슈번호 앞에 #을 붙여 github에서 트래킹 가능하도록 하였고, 커밋메시지 작성시 자동으로 ]이후 공백이 하나 추가되도록 하였다.위 코드들의 응용은 본인의 상황에 맞게 하면 된다.
이유는 모르겠으나, 위 코드가 정상작동하지 않는다. 다음을 사용하자.
#!/bin/sh COMMIT_MSG_FILE=$1 COMMIT_SOURCE=$2 SHA1=$3 /usr/bin/perl -i.bak -ne 'print unless(m/^. Please enter the commit message/..m/^#$/)' "$COMMIT_MSG_FILE" case "$COMMIT_SOURCE,$SHA1" in ,|template,) /usr/bin/perl -i.bak -pe ' print "\n" . `git diff --cached --name-status -r` if /^#/ && $first++ == 0' "$COMMIT_MSG_FILE" ;; *) ;; esac # .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/^.*\///') ISSUE_NUMBER=`echo $NAME | cut -d '-' -f1` DESCRIPTION=$(git config branch."$NAME".description) echo "[#$ISSUE_NUMBER-$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
참고 및 출처
git hook
https://myeongjae.kim/blog/2019/02/02/prepare-commit-msg-hook-issue-number
https://medium.com/prnd/github-%EC%BB%A4%EB%B0%8B-%EB%A9%94%EC%84%B8%EC%A7%80%EC%97%90-jira-%EC%9D%B4%EC%8A%88%EB%B2%88%ED%98%B8-%EC%9E%90%EB%8F%99%EC%9C%BC%EB%A1%9C-%EB%84%A3%EC%96%B4%EC%A3%BC%EA%B8%B0-779048784037
https://library.gabia.com/contents/8492/
https://gist.github.com/bartoszmajsak/1396344git flow naming convention
https://deepsource.io/blog/git-branch-naming-conventions/
https://gist.github.com/ihoneymon/a28138ee5309c73e94f9
https://iamcho2.github.io/2021/03/22/branch-rule-git-flow반응형'프로그래밍 > 프로그래밍' 카테고리의 다른 글
파이썬 and or not의 연산 결과, 파이썬의 참과 거짓 (0) 2021.04.18 UNICODE의 첫 128글자는 ASCII와 동일하다. (0) 2021.04.08