01. Udacity Commit Convention
- Commit Convention 개요
- Udacity에서 제안하는 Commit Convention은 코드의 이력을 명확하고 일관되게 관리하기 위한 규칙입니다.
- 이 규칙에 따르면, Commit 메시지는 Type, Subject (필수), Body (선택적), Footer (선택적)로 구성됩니다.
- Commit Type
- feat =: 새로운 기능 추가
feat: Add login functionality
- fix: 버그 수정
fix: Correct minor typos in code
- docs: 문서 변경 사항
docs: Update README with project setup instructions
- style: 코드 스타일 관련 변경 코드 변경 없이 포맷팅, 세미콜론 추가 등의 스타일 관련 수정을 포함.
style: Format code according to PEP8 standards
- refactor: 코드 리팩토링
refactor: Restructure existing class hierarchy
- test: 테스트 추가 또는 리팩토링
test: Add unit tests for User class
- chore: 빌드 태스크, 패키지 매니저 설정 등의 변경. 실제 제품 코드 변경 없이, 프로젝트의 유지관리 작업을 포함
chore: Update package.json dependencies
- Commit Message 예시
- Header:
- Commit Log의 제목으로, 50자 이내, 대문자로 시작하고 마침표 없이 명령문 형태로 작성.
- 태그와 작업의 대략적 내용을 포함
- Body
- 작업에 대한 상세 기록으로, Header와는 한 칸 공백으로 구분하며, 72자를 넘기지 않도록 함.
- 본문에는 변경의 의도와 이유를 상세히 설명. 여러 단락의 경우, 빈 줄로 구분. 필요에 따라 하이픈(-)을 사용해 불릿 포인트를 추가할 수 있음
- Footer
- 관련 Issue의 태그를 포함합니다. '#'과 Issue 번호로 작성합니다.(이슈 트래커 참조)
- 해당 commit이 merge 되면 자동으로 issue가 종료됨
02. Pre-commit
- Pre-commit 툴
- 'git commit' 수행 시 정해진 스크립트들을 자동으로 실행하는 툴입니다.
- 예: 코드 포맷팅(black, flake8), 유닛 테스트(pytest) 등을 실행합니다.
- Pre-commit 설치
- 가장 쉬운 방법은 pip를 사용한 설치입니다.
pip install pre-commit
명령어로 설치합니다.
- Pre-commit Hook 설정
- '.pre-commit-config.yaml’ 파일 생성이 필요합니다.
- 기본 hook에는 공백 제거, 파일 검사 등이 포함됩니다.
- 추가로 black 같은 툴을 통해 코드를 PEP8에 맞게 정리할 수 있습니다.
pre-commit install
로 hook을 설치합니다.
pre-commit autoupdate
로 hook을 업데이트합니다.
- Pre-commit 적용
- 파일을 commit하면 등록된 hook이 자동으로 실행되며, 필요에 따라 수정 후 다시 commit합니다.