개발 스타일 가이드
편집기/IDE 스타일링 표준화
로컬로 파일을 저장하기 전에 특정 스타일링 표준을 자동으로 적용하기 위해 EditorConfig를 사용합니다. 일부 편집기 및 IDE는 .editorconfig
설정을 기본적으로 자동으로 존중합니다.
당신의 편집기나 IDE가 .editorconfig
를 자동으로 지원하지 않는다면, 플러그인이 존재하는지 조사해보는 것을 권장합니다. 예를 들어, vim용 플러그인이 있습니다.
푸시 전 정적 분석 - Lefthook
Lefthook은 Git 후크 관리자로, 커밋이나 푸시 전에 사용자 정의 로직을 실행할 수 있게 합니다. GitLab은 Lefthook 구성인 lefthook.yml
을 제공하지만, 이를 설치해야 합니다.
lefthook.yml
은 확인되지만, Lefthook이 설치되기 전까지는 무시됩니다.
Overcommit 제거
우리는 Lefthook 이전에 Overcommit을 사용했었기 때문에, 먼저 overcommit --uninstall
로 제거할 수 있습니다.
Lefthook 설치
-
다양한 방법으로 lefthook을 설치할 수 있습니다. 예를 들어, 글로벌하게 설치하는 것이 아니고(GitLab 프로젝트에서만 사용하고 싶은 경우), Ruby gem을 통해 설치하려면 다음과 같이 합니다:
bundle install
-
Lefthook으로 관리되는 Git 후크를 설치합니다:
# 전역으로 설치한 경우 lefthook install # Ruby gem을 통해 설치한 경우 bundle exec lefthook install
-
Lefthook의
pre-push
Git 후크를 실행하여 Lefthook이 작동하는지 테스트합니다:# 전역으로 설치한 경우 lefthook run pre-push # Ruby gem을 통해 설치한 경우 bundle exec lefthook run pre-push
이렇게 하면 Lefthook 버전과 실행 가능한 명령어 디렉터리을 반환해야 합니다.
Lefthook 구성
Lefthook은 다음을 통해 구성됩니다:
-
lefthook.yml
에서의 프로젝트 구성. - 로컬 구성.
자동으로 파일 수정하는 Lefthook
우리는 자동 수정 기능을 가진 모든 린터를 실행시키기 위한 사용자 정의 lefthook 타겟을 가지고 있지만, 당신의 브랜치에서 변경된 파일에 대해서만 실행됩니다.
# 전역으로 설치한 경우
lefthook run auto-fix
# Ruby gem을 통해 설치한 경우
bundle exec lefthook run auto-fix
Lefthook 임시로 비활성화
Lefthook을 임시로 비활성화하려면, LEFTHOOK
환경 변수를 0
으로 설정할 수 있습니다. 예를 들어:
LEFTHOOK=0 git push ...
Lefthook 후크 매뉴얼 실행
pre-push
Git 후크를 실행하려면 다음과 같이 합니다:
bundle exec lefthook run pre-push
더 많은 정보는 Lefthook 문서를 참조하세요.
태그별 Lefthook 체크 건너뛰기
푸시할 때 태그에 기반하여 어떤 체크를 건너뛰려면, LEFTHOOK_EXCLUDE
환경 변수를 설정할 수 있습니다. 예를 들어:
LEFTHOOK_EXCLUDE=frontend,documentation git push ...
대안으로, 다음과 같은 구조를 가진 lefthook-local.yml
을 만들 수 있습니다:
pre-push:
exclude_tags:
- frontend
- documentation
더 많은 정보는 Lefthook 문서 구성 섹션를 참조하세요.
특정 Lefthook 체크 건너뛰거나 활성화
푸시할 때 이름에 따라 체크를 건너뛰거나 활성화하려면, 해당 후크에 대한 lefthook-local.yml
섹션에 skip: true
또는 skip: false
를 추가할 수 있습니다. 예를 들어, locale/gitlab.pot
에서 문제를 감지하기 위해 gettext 체크를 활성화하려면 다음과 같이 합니다:
pre-push:
commands:
gettext:
skip: false
더 많은 정보는 Lefthook 문서 건너뛰기 명령어 섹션을 참조하세요.
데이터베이스 마이그레이션
전용 데이터베이스 마이그레이션 스타일 가이드를 참조하세요. … (텍스트가 길어 생략)