|
| 1 | +Title: Python pre-commit 설정하기 |
| 2 | +Date: 2025-07-28 08:49 |
| 3 | +Modified: 2025-07-28 08:49 |
| 4 | +Category: Develop |
| 5 | +Tags: Python, Git, pre-commit, Git hooks |
| 6 | +Slug: python-precommit-설정하기 |
| 7 | +Summary: 블로그를 만들고 처음으로 git hook을 설정해다. |
| 8 | + |
| 9 | +다른 파이썬 프로젝트를 보다가 [ruff-pre-commit][1]이 설정되었는 것을 확인해서 적용해보기로 하고, 블로그에 작업을 시작. |
| 10 | + |
| 11 | +# pre-commit |
| 12 | + |
| 13 | +파이썬 라이브러리인 [pre-commit][2]. ~~12년된 프로젝트인데 왜 설정안했나? 나야?~~ |
| 14 | + |
| 15 | +나는 uv를 사용하니까 다음으로 설치. |
| 16 | + |
| 17 | +```bash |
| 18 | +uv add --dev pre-commit |
| 19 | +``` |
| 20 | + |
| 21 | +`dev` 그룹으로 넣은건 커밋할때 빼고는 동작하지 않아도 되는걸 굳이 캐싱까지하는 CI에 넣어야하나 싶어서 이기도함. |
| 22 | +그냥 글만 쓰게 되는 환경을 구성하게되면, 수정을 해보는걸로... |
| 23 | + |
| 24 | +# 설정 |
| 25 | + |
| 26 | +pre-commit에서 사용하는 설정은 `.pre-commit-config.yaml` 파일에 나열 해주면된다. |
| 27 | + |
| 28 | +```yaml |
| 29 | +repos: |
| 30 | + - repo: https://github.com/astral-sh/ruff-pre-commit |
| 31 | + rev: v0.12.5 |
| 32 | + hooks: |
| 33 | + - id: ruff-check |
| 34 | + args: [--fix] |
| 35 | + - id: ruff-format |
| 36 | + |
| 37 | + - repo: https://github.com/pre-commit/pre-commit-hooks |
| 38 | + rev: v5.0.0 |
| 39 | + hooks: |
| 40 | + - id: check-merge-conflict |
| 41 | + - id: check-toml |
| 42 | + - id: check-yaml |
| 43 | + - id: detect-private-key |
| 44 | + - id: end-of-file-fixer |
| 45 | + - id: mixed-line-ending |
| 46 | + - id: pretty-format-json |
| 47 | + args: [--autofix] |
| 48 | + - id: trailing-whitespace |
| 49 | +``` |
| 50 | +
|
| 51 | +## pre-commit-config.yaml 파일 구조 |
| 52 | +
|
| 53 | +내용을 다적을려고 했는데, 어떤 방법으로 보여주는게 좋을지 생각나지 않아 URL로 대체한다. |
| 54 | +
|
| 55 | +[여길 참고하자!](https://pre-commit.com/#adding-pre-commit-plugins-to-your-project) |
| 56 | +
|
| 57 | +# pre-commit plugins |
| 58 | +
|
| 59 | +- [pre-commit-hooks](https://github.com/pre-commit/pre-commit-hooks) |
| 60 | +- [ruff-pre-commit](https://github.com/charliermarsh/ruff-pre-commit) |
| 61 | +
|
| 62 | +# pre-commit cli |
| 63 | +
|
| 64 | +```bash |
| 65 | +# 설정 내역 반영 |
| 66 | +pre-commit install |
| 67 | + |
| 68 | +# 제거! |
| 69 | +pre-commit uninstall |
| 70 | +``` |
| 71 | + |
| 72 | +# 끝 |
| 73 | + |
| 74 | +뭔가 더 적을까했으나, 뭔가 더 적을 만한게... 없다. |
| 75 | +한번만 설정해두면, 왠만해서는 변경할 일이 없으니, 한번 잘 작성해두고 두고두고 버전업만 하면서 사용하도록하자. |
| 76 | +그리고 `pre-commit`과 비슷한 동작을 하는 것들이 언어별로 있으니 Python이 아닌 다른 언어를 사용한다면, 언어에 맞는 것을 사용하기 바란다. 레포에 두가지이상 언어가 섞이면 어지럽다. |
| 77 | + |
| 78 | +[1]: https://github.com/charliermarsh/ruff-pre-commit |
| 79 | +[2]: https://pre-commit.com/ |
0 commit comments