저번에 회사에서 GIT PR에 관련해서 템플릿을 만들었다.
이렇게 PR 템플릿을 만들고 보니 commit에 대해서 규격화된 형태가 있으면 좋지 않을까란 의견이 있어서 commit에 대해서도 어느 정도 컨벤션을 만들어 보기로 했다.
우선 현재 회사의 프로젝트 구조를 알아야 하는데 슈퍼 앱처럼 슈퍼 프로젝트로 하나의 코드 안에 3~4개 정도의 프로젝트가 섞여서 돌아가고 있는 형태이다.
그래서 내가 작업하지 않았어도 배포에 문제가 생기면 내 프로젝트도 영향이 무조건 가게 된다.
celery를 사용하여 워커 작업을 하게 되는데 워커의 종류가 여러 가지이다.
이런 환경이기 때문에 요구사항이
1. 커밋이 어떤 서버에 영향이 가는 커밋인지
2. 커밋이 어떤 프로젝트와 관련된 커밋인지
3. 커밋의 목적이 무엇인지
로 정해졌다.
[][] title
- body
- body
- body
- extra
우선 대괄호 2개를 사용하여 앞 괄호는 커밋의 대상이 되는 서버, 뒤 괄호는 커밋의 대상이 되는 프로젝트를 넣기로 했다.
위에 워커가 여러 종류 있다고 했는데 푸시, 비동기, 어드민, 엑셀, pdf 등등이 있다.
따라서 매번 배포 시마다 모든 워커를 배포하는 것이 아니라 대상이 되는 커밋 범위에서 commit을 보며 배포 서버를 정할 수 있게 되었다.
추가로 배포 후 문제가 발생했을 때 이번 릴리즈 범위에 프로젝트를 알 수 있기 때문에 담당자 호출이 빨라지는 장점이 존재했다.
title과 body 형태를 사용해서 title은 커밋의 목적, body는 어떤 이유인지에 대해 쓸 수 있게 하였다. 기존에 title을 길게 쓰게 되면 github에서 잘리는 경우가 많아 가급적 79자 이내에 title을 짧게 쓰고 body를 이용해서 왜 커밋 했는지 상세하게 적게 하여 다른 사람이 봤을 때 어떤 목적성 커밋인지 알 수 있게 하였다.
마지막으로 extra는 지라 티켓이나 관련 링크를 넣는 부분인데 많은 상황은 아니지만 임시 요구사항과 같은 사항에서 사용하고 있다.
이렇게 커밋도 다듬고 나니 릴리즈 상황에서 정돈된 형태의 커밋들을 볼 수 있었다. 이전에 PR을 정리했을 땐 각 PR의 상태를 확인하고 과거의 PR들을 쉽게 찾을 수 있었다면 커밋은 여러 사람의 작업물을 정돈되어서 보니 특히 배포 시에 큰 도움이 되었다.