머지 리퀘스트 의존성
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
단일 기능이 여러 프로젝트에 걸쳐 여러 머지 리퀘스트에 걸쳐 있을 수 있으며, 작업이 병합되는 순서가 중요할 수 있습니다. 머지 리퀘스트 의존성을 통해 다음을 수행할 수 있습니다: 프로젝트 me/myexample이 myfriend/library에서 라이브러리를 가져오는 경우, myfriend/library가 새 기능을 릴리스하면 프로젝트를 업데이트해야 합니다.
히스토리
단일 기능이 여러 프로젝트에 걸쳐 여러 머지 리퀘스트에 걸쳐 있을 수 있으며, 작업이 병합되는 순서가 중요할 수 있습니다. 머지 리퀘스트 의존성을 설정하면 Merge request dependencies must be merged 머지 검사가 충족될 때까지 종속 머지 리퀘스트를 병합할 수 없습니다.
머지 리퀘스트 의존성을 통해 다음을 수행할 수 있습니다:
- 필요한 라이브러리에 대한 변경 사항이 해당 라이브러리를 가져오는 프로젝트의 변경 사항보다 먼저 병합되도록 합니다.
- 기능 작업이 병합되기 전에 문서 전용 머지 리퀘스트가 병합되는 것을 방지합니다.
- 올바른 권한이 아직 없는 사람의 작업을 병합하기 전에 권한 매트릭스를 업데이트하는 머지 리퀘스트를 먼저 병합하도록 요구합니다.
프로젝트 me/myexample이 myfriend/library에서 라이브러리를 가져오는 경우,
myfriend/library가 새 기능을 릴리스하면 프로젝트를 업데이트해야 합니다.
myfriend/library가 새 기능을 추가하기 전에 me/myexample에 대한 변경 사항을 병합하면
프로젝트의 기본 브랜치가 손상됩니다. 머지 리퀘스트 의존성을 통해 너무 일찍 작업이 병합되는 것을 방지할 수 있습니다:
소스 코드 보기
%%{init: { "fontFamily": "GitLab Sans" }}%%
graph TB
accTitle: 머지 리퀘스트 의존성
accDescr: 머지 리퀘스트 의존성이 작업이 너무 일찍 병합되는 것을 방지하는 방법을 보여줍니다.
A['me/myexample' 프로젝트]
B['myfriend/library' 프로젝트]
C[머지 리퀘스트 #1:<br>새 버전 2.5 생성]
D[머지 리퀘스트 #2:<br>빌드에 버전 2.5<br>추가]
A-->|포함| D
B---->|포함| C
D-.->|의존| C
C-.->|차단| D
me/myexample 머지 리퀘스트를 draft로 표시하고 댓글에 이유를 설명할 수 있습니다. 이 방법은 수동이며, 특히 머지 리퀘스트가 다른 프로젝트의 여러 머지 리퀘스트에 의존하는 경우 확장이 어렵습니다. 대신 다음을 사용해야 합니다:
- 개별 머지 리퀘스트의 준비 상태를 Draft 또는 Ready 상태로 추적합니다.
- 머지 리퀘스트 의존성으로 머지 리퀘스트 병합 순서를 강제합니다.
머지 리퀘스트 의존성은 GitLab Premium의 기능이지만, GitLab은 종속 머지 리퀘스트에만 이 제한을 적용합니다:
- GitLab Premium 프로젝트의 머지 리퀘스트는 GitLab Free 프로젝트에 있는 머지 리퀘스트를 포함하여 다른 머지 리퀘스트에 의존할 수 있습니다.
- GitLab Free 프로젝트의 머지 리퀘스트는 다른 머지 리퀘스트에 의존할 수 없습니다.
중첩 의존성#
GitLab 16.7 이상에서는 간접적인 중첩 의존성을 지원합니다. 머지 리퀘스트는 최대 10개의 차단자를 가질 수 있으며, 차례로 최대 10개의 다른 머지 리퀘스트를 차단할 수 있습니다. 이 예시에서 myfriend/library!10은 herfriend/another-lib!1에 의존하며, 이는 다시 mycorp/example!100에 의존합니다:
소스 코드 보기
%%{init: { "fontFamily": "GitLab Sans" }}%%
graph LR;
accTitle: 머지 리퀘스트 의존성 체인
accDescr: 머지 리퀘스트 A가 머지 리퀘스트 B에 의존하고, 머지 리퀘스트 B가 머지 리퀘스트 C에 의존하는 방법을 보여주는 순서도
A[myfriend/library!10]-->|의존| B[herfriend/another-lib!1]
B-->|의존| C[mycorp/example!100]
중첩 의존성은 GitLab UI에 표시되지 않지만, UI 지원은 에픽 5308에서 제안되었습니다.
머지 리퀘스트는 자기 자신에 의존할 수 없지만(자기 참조), 순환 의존성을 만드는 것은 가능합니다.
머지 리퀘스트의 의존성 보기#
머지 리퀘스트가 다른 머지 리퀘스트에 종속된 경우, 머지 리퀘스트 보고서 섹션에 의존성에 대한 정보가 표시됩니다:
머지 리퀘스트의 의존성 정보를 보려면:
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 Code > Merge requests를 선택하고 머지 리퀘스트를 찾습니다.
- 머지 리퀘스트 보고서 영역으로 스크롤합니다. 종속 머지 리퀘스트는 Depends on 1 merge request being merged와 같이 설정된 총 의존성 수에 대한 정보를 표시합니다.
- Expand를 선택하여 각 의존성의 제목, 마일스톤, 담당자 및 파이프라인 상태를 봅니다.
머지 리퀘스트의 모든 의존성이 병합될 때까지 머지 리퀘스트를 병합할 수 없습니다.
닫힌 머지 리퀘스트#
닫힌 머지 리퀘스트는 계획된 작업을 병합하지 않고 닫힐 수 있으므로 여전히 종속 머지 리퀘스트가 병합되는 것을 방지합니다. 머지 리퀘스트가 닫히고 의존성이 더 이상 관련이 없는 경우, 종속 머지 리퀘스트를 차단 해제하기 위해 의존성을 제거하세요.
새 종속 머지 리퀘스트 생성#
새 머지 리퀘스트를 생성할 때 다른 특정 작업이 병합된 후에만 병합되도록 설정할 수 있습니다. 이 의존성은 머지 리퀘스트가 다른 프로젝트에 있는 경우에도 작동합니다.
전제 조건:
- Developer, Maintainer 또는 Owner 역할이 있거나 프로젝트에서 머지 리퀘스트를 생성할 권한이 있어야 합니다.
- 종속 머지 리퀘스트는 Premium 또는 Ultimate 티어의 프로젝트에 있어야 합니다.
새 머지 리퀘스트를 생성하고 다른 머지 리퀘스트에 종속으로 표시하려면:
- 새 머지 리퀘스트를 생성합니다.
- Merge request dependencies에서 이 작업이 병합되기 전에 병합되어야 하는 머지 리퀘스트의 참조 또는 전체 URL을 붙여넣습니다. 참조는
path/to/project!merge_request_id형식입니다. - Create merge request를 선택합니다.
의존성 추가를 위해 머지 리퀘스트 편집#
기존 머지 리퀘스트를 편집하여 다른 머지 리퀘스트에 종속으로 표시할 수 있습니다.
전제 조건:
- Developer, Maintainer 또는 Owner 역할이 있거나 프로젝트에서 머지 리퀘스트를 편집할 권한이 있어야 합니다.
방법:
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- 왼쪽 사이드바에서 Code > Merge requests를 선택하고 머지 리퀘스트를 찾습니다.
- Edit을 선택합니다.
- Merge request dependencies에서 이 작업이 병합되기 전에 병합되어야 하는 머지 리퀘스트의 참조 또는 전체 URL을 붙여넣습니다. 참조는
path/to/project!merge_request_id형식입니다.
머지 리퀘스트에서 의존성 제거#
종속 머지 리퀘스트를 편집하여 의존성을 제거할 수 있습니다.
전제 조건:
- 프로젝트에서 머지 리퀘스트를 편집할 수 있는 역할이 있어야 합니다.
-
상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
-
왼쪽 사이드바에서 Code > Merge requests를 선택하고 머지 리퀘스트를 찾습니다.
-
Edit을 선택합니다.
-
Merge request dependencies로 스크롤하고 제거하려는 각 의존성 참조 옆의 Remove를 선택합니다.
[!note] 볼 권한이 없는 머지 리퀘스트 의존성은 1 inaccessible merge request로 표시됩니다. 여전히 의존성을 제거할 수 있습니다.
-
Save changes를 선택합니다.
문제 해결#
프로젝트 가져오기 또는 내보내기 시 의존성 보존#
프로젝트를 가져오거나 내보낼 때 의존성이 보존되지 않습니다. 자세한 내용은 이슈 #12549를 참조하세요.
