반응형
안녕하세요. 이번 시간에는 코드 커밋 이전에 자동으로 포맷팅, 린팅, 문법 검사 등을 수행하면서
일관된 코드 스타일을 유지하고, CI 파이프라인 전단계에서 실수를 잡아낼 수 있도록
pre-commit 프레임워크를 적용하는 방법을 예시를 통해서 간단하게 살펴보도록 하겠습니다.
해당 글에서는 파이썬 프로젝트 레포를 기준으로 설명을 진행하겠습니다.
1. 설정 파일 작성 예시
원하는 커밋 훅 종류를 골라 다음과 같이 레포 내 루트 디렉토리에 .pre-commit-config.yaml
이름의 파일로 작성해줍니다.
fail_fast: false
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files
- repo: https://github.com/pycqa/isort
rev: 5.12.0
hooks:
- id: isort
name: isort (python)
args:
- --profile
- black
- --filter-files
- repo: https://github.com/psf/black
rev: 24.10.0
hooks:
- id: black
args:
- --line-length=88
- repo: https://github.com/charliermarsh/ruff-pre-commit
rev: v0.7.3
hooks:
- id: ruff
args:
- --fix
위의 예제에 다룬 설정의 예시에 대한 설명을 간단히 진행하면 다음과 같습니다.
1. fail_fast 옵션
- false이면 앞의 훅이 실패해도 뒤의 훅을 진행, true이면 앞의 훅에서 실패하면 멈춤
2. pre-commit-hooks 내장훅 기능
- trailing-whitespace: 줄 끝 불필요 공백 제거
- end-of-file-fixer: 파일 끝에 한 줄 개행 추가
- check-yaml: YAML 문법 오류 검사
- check-added-large-files: 스테이지된 큰 파일(기본 500KB 이상) 차단
3. isort (import 정리)
- --profile black: Black 스타일 가이드에 맞춰 import 정렬
- --filter-files: Git에 스테이지된 파일만 처리
4. black (코드 포맷터)
- 코드 스타일 통일, 위 예제에서는 라인당 88자 제한 예시
5. ruff (코드 린터)
- 위 예제에서는 자동 수정하도록 --fix 옵션 지정
원하는 포맷터, 린터 종류들을 위 형식과 유사하게 자유롭게 지정해주시면 됩니다.
2. pre-commit 적용 방법
위의 예시처럼 yaml 파일 작성이 완료되었다면, 다음 스텝을 통해 세팅 및 적용을 진행하시면 됩니다.
1. pre-commit 설치
pip install pre-commit
2. git 훅 등록
pre-commit install
3. 위의 세팅 이후에는 커밋 전에 일괄 검사 진행
pre-commit run --all-files
물론, git commit 시 자동으로 설정했던 단계가 진행되니 참고해주시면 됩니다.
이 글이 pre-commit 세팅 과정에 도움이 되셨기를 기원합니다.
잘 봐주셔서 감사드립니다.
'Git' 카테고리의 다른 글
| [Git] 실수로 git push한 내역 안전하게 되돌리기 (1) | 2025.07.13 |
|---|---|
| [Git] warning: adding embedded git repository 원인 및 해결법 (4) | 2024.10.22 |
| [Git] git pull 시 fatal: refusing to merge unrelated histories 오류 원인 및 해결 방법 (6) | 2024.10.08 |