Created at : 2025-01-05 23:51
Auther: Soo.Y


๐Ÿ“๋ฉ”๋ชจ

pre-commit ์ด๋ž€?

pre-commit์€ Git์—์„œ ์ปค๋ฐ‹์„ ์‹คํ–‰ํ•˜๊ธฐ ์ „์— ํŠน์ • ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž๋™์œผ๋กœ ์‹คํ–‰ํ•˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์ด ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋”ฉ ์Šคํƒ€์ผ๊ณผ ์ฝ”๋“œ ํ’ˆ์งˆ์„ ์‚ฌ์ „์— ๊ฒ€์ฆํ•˜์—ฌ ํŒ€์› ๊ฐ„ ์ฝ”๋“œ ๊ทœ์น™์„ ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. github : pre-commit github

pre-commit ์ฃผ์š” ๊ธฐ๋Šฅ

  • ์ฝ”๋“œ ํ’ˆ์งˆ ๋ณด์žฅ: ์ฝ”๋“œ ์Šคํƒ€์ผ ์˜ค๋ฅ˜์™€ ๊ฐ„๋‹จํ•œ ๋ฒ„๊ทธ๋ฅผ ๋ฏธ๋ฆฌ ์žก์•„๋ƒ„
  • ์‹œ๊ฐ„ ์ ˆ์•ฝ: ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋‹จ๊ณ„์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ˆ˜์ • ์ž‘์—…์„ ์ค„์—ฌ์คŒ
  • ํ˜‘์—… ๊ฐœ์„ : ์ฝ”๋“œ ๊ทœ์น™ ์ค€์ˆ˜๊ฐ€ ์ž๋™ํ™”๋˜๋ฏ€๋กœ ํŒ€์› ๊ฐ„์˜ ์ฝ”๋“œ ์ถฉ๋Œ ์ตœ์†Œํ™”

pre-commit install

pip ๋˜๋Š” poetry๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ pre-commit์„ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

poetry add pre-commit
# or pip install pre-commit

pre-commit ์„ค์ •ํŒŒ์ผ์„ ์•„๋ž˜์™€ ๊ฐ™์ด ๊ธฐ๋ณธ ์„ค์ •์œผ๋กœ ๋จผ์ € ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

pre-commit sample-config > .pre-commit-config.yaml

์—ฌ๊ธฐ์„œ๋Š” Black ํฌ๋งทํŒ…์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

repos:
-   repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v3.2.0
    hooks:
    -   id: trailing-whitespace
    -   id: end-of-file-fixer
    -   id: check-yaml
    -   id: check-added-large-files
-   repo: https://github.com/psf/black
    rev: stable
    hooks:
    -   id: black

pre-commit ์„ค์น˜ ๋ฐ ์‹คํ–‰

์œ„์—์„œ ์„ค์ •ํ•œ ํŒŒ์ผ์„ ๊ธฐ์ค€์œผ๋กœ pre-commit์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. pre-commit autoupdate๋ฅผ ์‚ฌ์šฉํ•ด์„œ .pre-commit-config.yamlํŒŒ์ผ์— ์ž‘์„ฑ๋œ ๋ฒ„์ „์„ ์—…๋ฐ์ดํŠธ ํ•ด์ค๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด black์€ stable์ด 24.10.0์œผ๋กœ ์—…๋ฐ์ดํŠธ ๋˜์—ˆ๊ณ  pre-commit์€ 5.0.0์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ด์„œ ์„ค์ •ํŒŒ์ผ์ด ์ƒˆ๋กญ๊ฒŒ ์ž‘์„ฑ๋œ๋‹ค.

pre-commit autoupdate # ์„ค์ •๋œ ํŒŒ์ผ์„ ๊ธฐ์ค€์œผ๋กœ ๋ฒ„์ „ ์—…๋ฐ์ดํŠธ
pre-commit install # ์„ค์น˜
pre-commit run --all-files # ์‹คํ–‰

๐Ÿ“œ์ถœ์ฒ˜(์ฐธ๊ณ  ๋ฌธํ—Œ)


๐Ÿ”—์—ฐ๊ฒฐ ๋ฌธ์„œ