요즘 알고리즘 문제 풀이를 주차별 이슈로 관리하고 있는데, 커밋 메시지를 매번 작성하기 너무 귀찮다는 생각이 들었다. 어떻게 자동화할 방법이 없을까 하다가 블로그의 알고리즘 카테고리와 이슈 번호를 포함한 커밋 메시지 생성부터 원격 저장소로의 푸쉬까지 자동으로 해주는 스크립트를 작성해보았다.
Jane's PS Blog에 들어가면 알고리즘이 카테고리별로 분류되어 있는데, 실제 포스트는 아래와 같이 생성된다.
그리고 블로그 포스팅을 업로드하기 위해 커밋할 때는 아래와 같이 카테고리: (#이슈번호) 문제 이름
의 형식으로 커밋을 하고 있었다.
하루에도 몇 문제씩 알고리즘을 푸는데 매번 커밋 메시지를 작성하려니 커밋 메시지를 update
로 모든 걸 끝내고 싶은 욕구가... 들어 커밋 메시지 작성, 커밋, 푸쉬 과정을 자동화하기로 했다.
#!/bin/bash
git add .
C=$(git diff --staged | grep category)
T=$(git diff --staged | grep title)
BRANCH=$(git branch | grep '*')
CATEGORY=${C##*:}
TITLE=${T##*:}
ISSUE=${BRANCH##*-}
MESSAGE="${CATEGORY:1}: (#${ISSUE}) ${TITLE:1}"
git commit -m "${MESSAGE}"
git push origin "${BRANCH:2}":<target branch>
- 게시글의 내용에서 카테고리와 타이틀 메타 데이터를 읽어온다.
- 현재 작업하고 있는 브랜치에서 이슈 번호를 가져온다.
- 카테고리: (#이슈번호) 게시글 제목의 형태로 커밋 메시지를 생성한 뒤 커밋한다.
- 브랜치로 푸시한다.
이제 alias를 등록해보자. auto-commit-push의 약자로 acp만 입력하면 작성했던 스크립트가 실행되도록 설정해주었다.
git config --global alias.acp '!bash auto-commit-and-push.sh'
git acp
만 실행하면 알아서 아래와 같은 커밋메시지가 생성된 뒤 push된다🎉🎉🎉
Source