머지 리퀘스트 승인 설정
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
사용 사례에 맞게 승인 규칙이 충족되도록 머지 리퀘스트 승인 설정을 구성할 수 있습니다. 다음 설정의 조합을 사용하여 머지 리퀘스트에 대한 승인 제한을 구성하세요: 단일 프로젝트의 머지 리퀘스트 승인 설정을 보거나 편집하려면:
사용 사례에 맞게 승인 규칙이 충족되도록 머지 리퀘스트 승인 설정을 구성할 수 있습니다. 또한 작업이 병합되기 전에 승인해야 하는 사용자의 수와 유형을 정의하는 승인 규칙을 구성할 수도 있습니다. 머지 리퀘스트 승인 설정은 머지 리퀘스트가 완료를 향해 진행될 때 이러한 규칙을 적용하는 방법을 정의합니다.
다음 설정의 조합을 사용하여 머지 리퀘스트에 대한 승인 제한을 구성하세요:
- Prevent approval by merge request creator: 머지 리퀘스트의 작성자가 자신의 머지 리퀘스트를 승인하는 것을 방지합니다.
- Prevent approvals by users who add commits: 머지 리퀘스트에 커밋을 추가한 사용자가 해당 머지 리퀘스트를 승인하는 것을 방지합니다.
- Prevent editing approval rules in merge requests: 사용자가 머지 리퀘스트에서 프로젝트 승인 규칙을 재정의하는 것을 방지합니다.
- Require user re-authentication (password or SAML) to approve: 잠재적 승인자가 먼저 비밀번호 또는 SAML로 인증하도록 강제합니다.
- 코드 소유자 승인 제거: 커밋이 머지 리퀘스트에 추가될 때 기존 승인에 대해 어떤 일이 발생하는지 정의합니다.
- Keep approvals: 승인을 제거하지 않습니다.
- Remove all approvals: 모든 기존 승인을 제거합니다.
- Remove approvals by Code Owners if their files changed: 코드 소유자가 머지 리퀘스트를 승인한 후 나중에 커밋이 해당 코드 소유자의 파일을 변경하면 해당 승인이 제거됩니다.
머지 리퀘스트 승인 설정 편집#
단일 프로젝트의 머지 리퀘스트 승인 설정을 보거나 편집하려면:
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 Settings > Merge requests를 선택합니다.
- Approvals를 펼칩니다.
인스턴스 또는 최상위 그룹에서 설정 캐스케이드#
승인 규칙 설정 관리를 단순화하려면 가능한 가장 광범위한 수준에서 설정을 구성하세요. 구성된 설정:
설정이 캐스케이드되는 방식은 설정이 구성된 위치에 따라 다릅니다:
-
인스턴스에 구성된 설정은 모든 그룹 및 프로젝트의 동일한 설정을 잠급니다. 그룹 또는 프로젝트에서 상속된 설정을 변경할 수 없습니다.
-
최상위 그룹에 구성된 설정은 해당 하위 그룹 및 프로젝트로 캐스케이드됩니다:
- 그룹에 대해 방지 설정이 활성화된 경우 동일한 프로젝트 설정이 잠깁니다. 프로젝트 Maintainer는 변경할 수 없습니다.
- 그룹에 대해 방지 설정이 비활성화된 경우 프로젝트 Maintainer는 개별 프로젝트에 대해 설정을 구성할 수 있습니다.
머지 리퀘스트 작성자의 승인 방지#
기본적으로 머지 리퀘스트의 작성자는 자신의 머지 리퀘스트를 승인할 수 없습니다. 이 설정을 변경하려면:
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 Settings > Merge requests를 선택합니다.
- Merge request approvals 섹션에서 Approval settings로 스크롤하고 Prevent approval by merge request creator (author) 체크박스를 해제합니다.
- Save changes를 선택합니다.
머지 리퀘스트 작성자는 개별 머지 리퀘스트에서 승인 규칙을 편집하여 이 설정을 재정의할 수 있습니다. 단, 다음 옵션 중 하나를 구성한 경우는 예외입니다:
- 프로젝트에 대한 기본 승인 재정의 방지.
- (GitLab Self-Managed 인스턴스만 해당) 인스턴스에 대한 기본 승인 재정의 방지. 인스턴스에 대해 구성된 경우 프로젝트 또는 개별 머지 리퀘스트에서 이 설정을 편집할 수 없습니다.
커밋을 추가한 사용자의 승인 방지#
히스토리
- GitLab 16.3에서 기능 플래그
keep_merge_commits_for_approvals가 추가되어 머지 커밋도 이 확인에 포함됨. - GitLab 16.5에서 기능 플래그
keep_merge_commits_for_approvals가 제거됨. 이 확인에 이제 머지 커밋이 포함됨.
기본적으로 머지 리퀘스트에 커밋한 사용자(커미터)는 여전히 해당 머지 리퀘스트를 승인할 수 있습니다. 부분적으로 자신의 것인 머지 리퀘스트를 프로젝트(또는 인스턴스)의 커미터가 승인하지 못하도록 하려면:
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 Settings > Merge requests를 선택합니다.
- Merge request approvals 섹션에서 Approval settings로 스크롤하고 Prevent approvals by users who add commits를 선택합니다. 이 체크박스가 해제되어 있으면 관리자가 인스턴스에 대해 비활성화한 것이며, 프로젝트에서는 변경할 수 없습니다.
- Save changes를 선택합니다.
머지 리퀘스트에 커밋한 코드 소유자는 머지 리퀘스트가 자신이 소유한 파일에 영향을 미치는 경우 해당 머지 리퀘스트를 승인할 수 없습니다.
자세한 내용은 공식 Git 문서를 참조하세요.
머지 리퀘스트가 원래 변경 사항을 커밋한 사용자가 아닌 다른 사람에 의해 리베이스되면 새 커미터로 커밋 기록이 다시 작성됩니다. 이로 인해 이전에 머지 리퀘스트에 변경 사항을 커밋했던 사용자가 더 이상 커미터가 아니므로 이제 해당 변경 사항을 승인할 수 있게 될 수 있습니다.
리베이스 후 승인도 참조하세요.
머지 리퀘스트에서 승인 규칙 편집 방지#
기본적으로 사용자는 머지 리퀘스트별로 프로젝트에 대해 생성한 승인 규칙을 재정의할 수 있습니다. 사용자가 머지 리퀘스트에서 승인 규칙을 변경하지 못하도록 하려면 이 설정을 비활성화할 수 있습니다:
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 Settings > Merge requests를 선택합니다.
- Merge request approvals 섹션에서 Approval settings로 스크롤하고 Prevent editing approval rules in merge requests를 선택합니다.
- Save changes를 선택합니다.
이 설정은 각 수준에서 다른 범위를 가집니다. 프로젝트 또는 그룹의 경우 머지 리퀘스트별 승인 규칙 재정의를 방지합니다. 프로젝트 설정의 승인 규칙 목록은 여전히 편집 가능합니다. 프로젝트 Maintainer가 승인 규칙 목록을 편집하는 것도 방지하려면 관리자가 인스턴스에 대해 Prevent editing approval rules in projects and merge requests를 활성화해야 합니다.
이 필드를 변경하면 설정에 따라 모든 열려 있는 머지 리퀘스트에 영향을 줄 수 있습니다:
- 사용자가 이전에 승인 규칙을 편집할 수 있었고 이 동작을 비활성화하면 GitLab은 승인 규칙을 적용하기 위해 모든 열려 있는 머지 리퀘스트를 업데이트합니다.
- 사용자가 이전에 승인 규칙을 편집할 수 없었고 승인 규칙 편집을 활성화하면 열려 있는 머지 리퀘스트는 변경되지 않습니다. 이를 통해 해당 머지 리퀘스트의 승인 규칙에 이미 적용된 변경 사항이 보존됩니다.
승인하기 위해 사용자 재인증 요구#
히스토리
- GitLab.com 그룹에 SAML 인증을 사용한 재인증 요구가 GitLab 16.6에서
ff_require_saml_auth_to_approve라는 플래그와 함께 도입됨. 기본적으로 비활성화됨. - GitLab Self-Managed 인스턴스에 SAML 인증을 사용한 재인증 요구가 GitLab 16.7에서
ff_require_saml_auth_to_approve라는 플래그와 함께 도입됨. 기본적으로 비활성화됨. - GitLab 16.8에서 GitLab.com 및 GitLab Self-Managed 인스턴스에 대해
ff_require_saml_auth_to_approve를 기본적으로 활성화됨. - GitLab 18.3에서 기능 플래그 제거됨.
GitLab Self-Managed에서는 기본적으로 SAML 인증을 사용한 재인증 요구가 사용 가능합니다. 기능을 숨기려면 관리자가 ff_require_saml_auth_to_approve라는 기능 플래그를 비활성화할 수 있습니다. GitLab.com 및 GitLab Dedicated에서는 이 기능을 사용할 수 있습니다.
잠재적 승인자가 먼저 SAML 또는 비밀번호로 인증하도록 강제할 수 있습니다. 이 권한은 Code of Federal Regulations (CFR) Part 11에 정의된 것과 같은 승인에 대한 전자 서명을 가능하게 합니다.
전제 조건:
- 이 설정은 최상위 그룹에서만 사용할 수 있습니다.
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- 비밀번호 인증 및 SAML 인증을 활성화합니다. 다음에 대한 자세한 내용:
- 비밀번호 인증은 로그인 제한 문서를 참조하세요.
- GitLab.com 그룹에 대한 SAML 인증은 GitLab.com 그룹용 SAML SSO 문서를 참조하세요.
- GitLab Self-Managed 인스턴스용 SAML 인증은 GitLab Self-Managed용 SAML SSO를 참조하세요.
- 왼쪽 사이드바에서 Settings > Merge requests를 선택합니다.
- Merge request approvals 섹션에서 Approval settings로 스크롤하고 Require user re-authentication (password or SAML) to approve를 선택합니다.
- Save changes를 선택합니다.
소스 브랜치에 커밋이 추가될 때 모든 승인 제거#
기본적으로 승인 후 변경 사항을 더 추가하면 머지 리퀘스트에 대한 승인이 제거됩니다.
GitLab은 git patch-id를 사용하여 머지 리퀘스트의 diff를 식별합니다. 이 값은 합리적으로 안정적이고 고유한 식별자로, 머지 리퀘스트 내에서 승인 재설정에 대한 보다 스마트한 결정을 가능하게 합니다. 머지 리퀘스트에 새 변경 사항을 푸시하면 patch-id가 이전 patch-id와 비교되어 승인을 재설정해야 하는지 결정됩니다. 이를 통해 기능 브랜치에서 git rebase 또는 git merge <target>과 같은 명령을 수행할 때 GitLab이 더 나은 재설정 결정을 내릴 수 있습니다.
머지 리퀘스트에 변경 사항이 더 추가된 후 기존 승인을 유지하려면:
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 Settings > Merge requests를 선택합니다.
- Merge request approvals 섹션에서 Approval settings로 스크롤하고 Remove all approvals 체크박스를 해제합니다.
- Save changes를 선택합니다.
머지 리퀘스트 생성 및 승인을 자동화하는 경우, 머지 리퀘스트를 승인하기 전에 커밋이 완전히 처리되도록 로직을 포함하세요. 이를 통해 의도치 않은 승인 재설정을 방지할 수 있습니다. 자세한 내용은 자동화된 머지 리퀘스트의 타이밍 문제 처리를 참조하세요.
파일이 변경된 경우 코드 소유자의 승인 제거#
새 커밋에서 파일이 변경되는 코드 소유자의 승인만 제거하려면:
전제 조건:
- 프로젝트에 대한 Maintainer 또는 Owner 역할이 있어야 합니다.
방법:
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 Settings > Merge requests를 선택합니다.
- Merge request approvals 섹션에서 Approval settings로 스크롤하고 Remove approvals by Code Owners if their files changed를 선택합니다.
- Save changes를 선택합니다.
