티스토리 뷰
들어가며
- 회서 업무를 하다보면 보통 커밋 컨벤션이 있기 마련인데 필자의 경우에는 JIRA 를 사용하면서 JIRA 티켓 번호를 prefix 로 불여주고 있다.
- ex.
[PROJ-9321] refactor: .....
- ex.
- 다만 매번 티켓 번호를 타이핑 하는 것에 피로감이 느껴지면서 자동으로 붙여줄 수 없을가 고민하면서 git hooks 라는 방법을 적용해보았다.
Git Hooks
- Git 에서 제공해주는 기능으로 다양한 상황 (commit, merge 등) 에서 트리거되는 작업에서 실행되는 동작을 정의할 수 있다.
- 자세한 내용은 공식 문서 참고
적용해보기
- hook 을 적용하기 위해서는 원하는 hook 을 확인하고 해당 hook 파일에 쉡 스크립트 형태로 동작을 정의할 수 있다.
현재 branch 명 추출하기
- shell 에서 grep 명령어를 통해서 현재 브랜치 이름만 가져오는 코드이다.
- 이제 아래 코드를 스크립트에 적용할 것이다.
$ git branch | grep '\*' | sed 's/\* //' | sed 's/\([^/]*\).*/\1/'
PROJ-2372
prepare-commit-msg
- 나의 경우 커밋을 하는 시점에 커밋 메시지를 가공하고 싶었기에 'prepare-commit-msg' 훅을 사용하게 되었다.
- 이제 적용을 원하는 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_MESSAGE_FILE_PATH=$1
# merge commit에 대해서는 prefix를 생성하지 않는다.
MERGE=$(grep -c -i 'merge' < "$COMMIT_MESSAGE_FILE_PATH")
if [ "$MERGE" != "0" ] ; then
exit 0
fi
PREFIX=$(git branch | grep '\*' | sed 's/* //' | sed 's/^.*\///' | sed 's/^\([^-]*-[^-]*\).*/\1/')
echo "[$PREFIX] $(cat "$COMMIT_MESSAGE_FILE_PATH")" > "$COMMIT_MESSAGE_FILE_PATH"
- 이후에 해당 파일을 실행 가능하게 권한을 준다.
- 그리고 커밋을 해보면 브랜치명이 '[PROJ-3124]' 형태로 prefix 로 붙는 것을 확인할 수 있다.
$ chmod +x .git/hooks/prepare-commit-msg
참고
반응형
'프로그래밍 > Git' 카테고리의 다른 글
[Github] Pull Request resolve된 모든 comment 보는 방법 (0) | 2021.08.09 |
---|---|
[Git] Git Authentication Failed 사용자 인증 문제 해결 (0) | 2020.04.11 |
[Git] "Unable to create '/path/to/repo/.git/index.lock': File exists." 발생시 문제 해결 방법 (0) | 2020.03.18 |
[Bitbucket] Bitbucket과 Slack 연동하는 방법 (0) | 2020.03.16 |
[Git] "Unable to create '/.git/index.lock': File exists." 메시지 발생할 때 (0) | 2019.11.06 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 이펙티브
- 일본여행
- 자전거 여행
- JavaFX 종료
- effectivejava
- intelij
- 일본 자전거 여행
- 자전거
- JavaFX Table View
- effective java
- windows
- 일본 여행
- TableView
- 텐트
- JavaFX Window Close
- JavaFX 테이블뷰
- 일본 배낭여행
- 인텔리제이
- Java UI
- springboot
- java
- JavaFX
- 배낭여행
- git
- 스프링부트
- 이펙티브자바
- 배낭 여행
- 방통대 과제물
- 자바
- 이펙티브 자바
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함