[Git] GitHub CODEOWNERS
.github/CODEOWNERS 파일과 동작 원리에 대해 정리했습니다.
2025-11-05조회수 -
GitCODEOWNERS
CODEOWNERS
"이 코드의 책임자(리뷰어)가 누구인지"를 GitHub에 알려주는 설정 파일
프로젝트 규모가 커질수록 코드의 소유권(Ownership)을 명확히 할 필요가 있다.
CODEOWNERS 파일을 사용하여 책임과 권한을 명시한다.
파일 생성 위치
CODEOWNERS 파일은 다음 위치 중 하나에 둘 수 있다.
- .github/CODEOWNERS (권장)
- CODEOWNERS (repository root)
- docs/CODEOWNERS
동작 과정
sequenceDiagram
actor Dev as 개발자
participant GH as GitHub
participant CO as CODEOWNERS 파일 (.github/CODEOWNERS)
Dev->>GH: PR 생성
GH->>GH: 변경 파일 목록 계산(diff)
GH->>CO: 규칙 로드 및 경로/패턴 매칭
GH->>GH: 매칭된 Owner 추출
GH-->>Dev: 자동 리뷰어 지정(요청)-
규칙 정의: CODEOWNERS 파일 안에 특정 폴더나 파일 패턴, 그리고 그 담당자의 GitHub ID 또는 팀(GitHub Team) 명시
# 특정 폴더 전체 /lib/services/payment/ @org-name/team-name # 특정 파일 /lib/main.dart @user-name # 모든 dart 파일 *.dart @org-name/frontend-team -
PR 발생: 누군가 Pull Request (PR) 생성
-
자동 리뷰 요청: GitHub가 PR에서 변경된 파일들을 확인하고, CODEOWNERS 파일에 정의된 규칙과 일치하는 담당자(Owner)가 있는지 탐색
-
리뷰어 지정: 만약 일치하는 담당자가 있다면, 그 사람(또는 팀)을 자동으로 해당 PR의 리뷰어로 추가
CODEOWNERS 우선순위
CODEOWNERS는 위에서 아래로 평가되며, 가장 마지막에 매칭된 규칙이 적용된다.*.dart @org-name/frontend-team /lib/main.dart @project-lead-userlib/main.dart는 frontend-team이 아니라 project-lead-user가 담당
- CODEOWNERS 파일은 .gitignore 문법과 유사하게 동작한다.
- 저장소 설정에 따라, 이 CODEOWNERS로 지정된 사람의 승인을 받아야만 PR을 병합(Merge)할 수 있도록 강제할 수 있다.
- GitHub는 기본 브랜치(default branch)에 있는 CODEOWNERS 파일만 기준으로 동작한다.