우리 팀 모두에게 git commit template 을 적용해보자

junamee·2023년 12월 10일
0

프론트엔드

목록 보기
16/17

gitKraken에 템플릿 적용하기

현재 프론트 팀은 gitKraken으로 깃툴을 맞추어서 해당 방법을 안내합니다.
깃크라켄을 사용하면 쉽게 설정을 적용할 수 있어요.
*깃크라켄클라이언트-커밋템플릿 설정

GUI를 통해 템플릿을 작성할 수 있고 이 작성한 템플릿은 .git/gkcommittemplate.txt로 저장되며 git config에 템플릿을 설정한다는 명령어(git config --global commit.template .gkcommittemplate.txt )까지 실행이 되어 gitKraken의 커밋GUI에 적용됩니다.

.git/gkcommittemplate.txt

feat : Subject line

# [optional description of commit] 

# [issue number]
TICO-XXXX

# ---------------------------------------------------------
# commit type 
# : feat, fix, design, test, refactor, docs,  chore

# [optional description of commit] 
# - feel free to be detailed.
# - prefix '-' for multi-line

*참고자료 : 커밋메시지템플릿

템플릿이 잘 적용되면 커밋 메시지를 작성하는 곳에 제가 설정해둔 템플릿 내용이 뜹니다. #으로 시작하는 건 주석이라서 내용을 삭제하지 않더라도 커밋에 반영되지 않습니다. :)

그런데 하나 아쉬운게 있습니다.
이 커밋 템플릿은 제 깃크라켄에만 적용되어있어요.
팀원분들과 협업 시에 유용하게 사용하려고 시도했는데
저 혼자하는거라면 큰 의미가 없다고 생각해요.

그렇다고 제가 팀원들에게 가서 '이거 복사해서 붙여넣기하고 저장해주세요' 라고 할수도 있지만, 새로운 팀원이 오거나.. 설정을 지우는 등의 이슈로 컨벤션이 지켜지지 않는 상황을 좀 막고 싶어졌어요.

그래서 이 레포지토리를 받는 모두에게 규칙을 적용할 수 있는 방법을 알아보게 되었습니다.

깃템플릿 공유를 위한 고민들 (패스ok)

husky를 써볼까? git hooks를 써볼까?
여러가지 대안을 찾아봤는데
husky는 제약상황에 맞지 않을경우 commit을 하지 못하게 하는 쪽의 기능이어서 바쁜 팀의 상황에 맞지 않겠다는 생각이 들었어요. 핫픽스의 경우 급하게 처리하느라 이슈넘버가 나오지 않을 때도 있어서, 템플릿을 안내 정도의 역할로 쓰고 싶었거든요.

git hooks도 대표적인 pre commit, prepare-commit-msg 등 훅들이 있지만 커밋을 작성하기 전에 템플릿이 적용되어있어야 하며, 프로그램에서 브랜치명 등의 인자를 통해 커밋 메시지 설정을 해주는 예시
(feature-XXXX -> commit message = feature : 내용작성)들은 찾아봤지만 브랜치의 큰 목적보다는 좀 더 커밋 내역 하나하나에 맞춰 커밋메시지 작성이 필요하다 생각해 다 제가 필요한 내용은 아니었네요.

그래서 결국은 해당 프로젝트를 실행하는 경우 git config를 변경해주는 스크립트를 실행시켜버리자! 라는 결론에 도달했습니다.

프로젝트 스크립트 끼어넣기

마음같아서는 yarn dev를 실행할때 template을 적용시킬까 하다가 불필요한 실행을 막기 위해 ㅎㅎ 명령어를 분리하였습니다.

  • package.json에 명령어 추가
    "template": "bash template.sh"
    template.sh라는 쉘스크립트를 실행시키는 명령어입니다.

    //package.json
    
    {
      "name": "tictoc-parent-web",
      "private": true,
      "scripts": {
        "dev": "next dev -p 3001",
        "build": "next build",
        "start": "next start",
        "lint": "next lint",
        "type-check": "tsc --project tsconfig.json --pretty --noEmit",
        "template": "bash template.sh"
        },
          ...
    
  • template.sh 쉘스크립트
    template_content라는 변수에 커밋 템플릿 내용을 저장하고 template_path에 .git에 경로로 커밋 템플릿 패스를 작성해주며 템플릿 파일을 생성합니다.

    그리고 git의 commit템플릿 설정에 생성한 파일을 등록해주면 커밋 템플릿 설정이 완료됩니다.
    아래 스크립트를 참고해주세요.

#!/bin/bash

# 템플릿 파일 경로
template_path=".git/commit-template.txt"

# 템플릿 내용
template_content=$(cat <<EOF
feat : Subject line

# [optional description of commit]

# [issue number]
TICO-XXXX

# ---------------------------------------------------------
# commit type
# : feat, fix, design, test, refactor, docs,  chore

# [optional description of commit]
# - feel free to be detailed.
# - prefix '-' for multi-line
EOF
)

# 템플릿 파일 생성
echo "$template_content" > "$template_path"

# 템플릿 파일 경로를 Git 설정에 등록
git config --local commit.template "$template_path"

echo "커밋 템플릿이 설정되었습니다."

그럼 마지막,

  • yarn template 명령어 실행
    터미널에서 yarn template을 실행해 봅니다.
    바로 GitKraken 커밋 GUI에서 템플릿을 확인할 수 있다.

완성~ :)
이왕 정한 컨벤션을 툴을 사용해서 꼭 잘 지켜지도록 관리해야겠습니다.

profile
아티클리스트 - bit.ly/3wjIlZJ

0개의 댓글