Pre-commit을 설정하여 코드 변경을 Commit 할 때 코드 포맷팅을 자동화하는 실습을 진행합니다.
해당 실습 자료는 3. Github Pull Request를 통해 코드 리뷰 받기에서 이어집니다.
pre-commit 추가 Issue 생성하기
Issue 탭으로 이동해 pre-commit을 추가하는 Issue를 생성합니다.

작업 브랜치 생성
먼저 main 브랜치로 변경 후 git pull 명령어를 통해 새로운 업데이트 사항을 Local Repository로 받아옵니다.

feat-2/pre-commit 브랜치를 생성 후 브랜치를 변경합니다.

pre-commit 설치
pip install pre-commit
pre-commit config를 설정합니다.
pre-commit sample-config > .pre-commit-config.yaml 명령어를 통해 생성합니다.
코드를 PEP 8에 맞게 정리해주는 black을 파일에 추가해주겠습니다.
# See <https://pre-commit.com> for more information
# See <https://pre-commit.com/hooks.html> for more hooks
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 autoupdate 명령어로 설정된 hook들을 업데이트 해줍니다. 다음과 같이 수정됩니다.
(업데이트 현황에 따라 버전은 달라질 수 있습니다.)
# See <https://pre-commit.com> for more information
# See <https://pre-commit.com/hooks.html> for more hooks
repos:
- repo: <https://github.com/pre-commit/pre-commit-hooks>
rev: **v4.6.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: **24.4.2**
hooks:
- id: black
pre-commit install 명령어로 현재 프로젝트에 pre-commit을 설치합니다.

.pre-commit-config.yaml 파일을 Commit 합니다.

자동으로 수정할 수 있는 것들은 자동으로 수정됩니다. 그렇지 않은 것들은 개발자가 수정해야합니다.
git diff 명령어로 무엇이 자동 수정되었나 확인하니 yaml 파일의 포맷이 변경되었습니다. 다시 add & commit을 수행합니다.
모든 파일에 문제가 없다면, 다음과 같이 출력문이 나옵니다.

기존 코드에 pre-commit 적용하기
이전에 추가된 코드들은 pre-commit 검사가 적용되지 않았습니다.
pre-commit run —all-files 명령어를 통해 전체 파일을 검사하고 수정할 수 있습니다.
main.py 및 Markdown 파일들이 수정되었습니다.
pre-commit이 반영돤 코드들을 모두 commit 합니다.

git push origin feat-2/pre-commit 명령어로 코드를 push 합니다.

Pull Request 생성 및 리뷰 요청

리뷰 승인 및 Pull Request Merge


Issue도 닫힌 것을 확인할 수 있습니다.
