병합 요청 종속성

Tier: 프리미엄, 얼티밋 Offering: GitLab.com, Self-managed, GitLab Dedicated
  • GitLab 16.6에 도입된 remove_mr_blocking_constraints라는 플래그로 복잡한 병합 종속성을 지원합니다. 기본적으로 비활성화되어 있습니다.
  • GitLab 16.7에서 복잡한 병합 종속성이 일반적으로 사용 가능해졌습니다. 기능 플래그 remove_mr_blocking_constraints가 제거되었습니다.

단일 기능은 여러 병합 요청에 걸쳐 나뉘어 있을 수 있으며, 작업이 병합되는 순서는 중요할 수 있습니다. 특정한 순서로 작업을 병합하는 것이 중요할 때 병합 요청 종속성을 사용하세요. 몇 가지 예시:

  • 필요한 라이브러리의 변경 사항이 해당 라이브러리를 가져오는 프로젝트의 변경 사항보다 먼저 병합되도록 보장합니다.
  • 단순히 문서만을 다루는 병합 요청이 실제 기능 작업을 병합되기 전에 병합되지 않도록 합니다.
  • 권한이 아직 부여되지 않은 사람의 작업이 병합되기 전에 권한 매트릭스를 업데이트하는 병합 요청이 병합되도록 요구합니다.

당신의 프로젝트 me/myexamplemyfriend/library에서 라이브러리를 가져오는 경우, myfriend/library에 새로운 기능을 사용하도록 프로젝트를 업데이트하고 싶을 수 있습니다. 그러나 외부 라이브러리가 새로운 기능을 추가하기 전에 프로젝트의 변경 사항을 병합한다면 프로젝트의 기본 브랜치가 손상될 수 있습니다. 병합 요청 종속성은 당신의 작업이 너무 일찍 병합되지 않도록 합니다:

graph TB A['me/myexample' 프로젝트] B['myfriend/library' 프로젝트] C[병합 요청 #1:<br>새로운 버전 2.5 생성] D[병합 요청 #2:<br>빌드에 버전 2.5 추가] A-->|포함함| D B---->|포함함| C D-.->|의존함| C C-.->|차단함| D

당신의 me/myexample 병합 요청에 드래프트를 표시하고 댓글에서 그 이유를 설명할 수 있습니다. 그러나 이 방법은 수동적이고 여러 프로젝트에 걸친 여러 다른 병합 요청에 의존할 때 특히 확장성이 없습니다. 대신, 단일 병합 요청의 준비여부를 추적하고, 병합 요청 종속성을 사용하여 병합 순서를 강제하세요.

note
병합 요청 종속성은 프리미엄 기능입니다. 그러나 이 제한은 의존하는 병합 요청에만 적용됩니다. 프리미엄 프로젝트의 병합 요청은 프리 프로젝트의 병합 요청에 의존할 수 있지만, 프리 프로젝트의 병합 요청은 의존적으로 표시할 수 없습니다.

중첩된 종속성

GitLab 16.7 이후에서 간접적이고 중첩된 종속성이 지원됩니다. 단일 병합 요청은 최대 10개의 병합 요청에 따라 차단되며, 마찬가지로 최대 10개의 병합 요청을 차단할 수 있습니다. 이 예에서 myfriend/library!10herfriend/another-lib!1에 의존하고, 그 다음으로 herfriend/another-lib!1mycorp/example!100에 의존합니다:

graph LR; A[myfriend/library!10]-->|의존함| B[herfriend/another-lib!1] B-->|의존함| C[mycorp/example!100]

중첩된 종속성은 GitLab UI에는 표시되지 않지만 UI 지원이 에픽 5308에서 제안되었습니다.

note
병합 요청 자체를 의존적으로 표시할 수는 없지만(자기 참조), 순환 종속성은 만들 수 있습니다.

병합 요청의 종속성 보기

병합 요청이 다른 요청에 의존하는 경우, 병합 요청 보고서 섹션에 해당 종속성에 관한 정보가 표시됩니다:

병합 요청 위젯에서의 종속성

병합 요청에서 종속성 정보를 보려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 코드 > 병합 요청을 선택하고 병합 요청을 식별합니다.
  3. 병합 요청 보고서 영역으로 스크롤합니다. 의존하는 병합 요청에 대한 정보가 (상태 경고) 병합되기 위해 1개의 병합 요청에 의존함과 같이 표시됩니다.
  4. 각 종속성의 제목, 마일스톤, 담당자, 및 파이프라인 상태를 보려면 확장을 선택하세요.

당신의 병합 요청의 모든 종속성이 병합될 때까지, 당신의 병합 요청은 병합될 수 없습니다. 병합 차단됨: 위의 항목들이 해결된 후에만 병합할 수 있습니다 메시지가 표시됩니다.

종료된 병합 요청

종료된 병합 요청은 계획된 작업이 실제로 병합되었는지 여부에 상관없이 병합 요청을 종료할 수 있기 때문에 그 종속병합 요청이 여전히 병합되지 못하도록 합니다.

병합 요청이 종료되고 의존성이 더는 관련이 없다면, 의존성을 제거하여 종속적인 병합 요청을 차단 해제하세요.

새로운 종속 병합 요청 생성하기

새로운 병합 요청을 생성할 때, 해당 병합 요청이 다른 프로젝트에 있더라도 다른 특정 작업이 병합되기 전까지는 병합되지 않도록 할 수 있습니다.

전제 조건:

  • 적어도 프로젝트에서 병합 요청을 생성할 수 있는 개발자 역할이 있어야 합니다.
  • 종속 병합 요청이 프리미엄 또는 얼티메이트 티어의 프로젝트에 있어야 합니다.

새로운 병합 요청을 생성하고, 다른 작업이 머지되기 전에 해당 요청이 종속되도록 표시하려면:

  1. 새로운 병합 요청 생성.
  2. 병합 요청 종속성에서 이 작업이 병합되기 전에 머지해야 하는 병합 요청의 참조 또는 전체 URL을 붙여넣기하세요. 참조는 path/to/project!merge_request_id 형식입니다.
  3. 병합 요청 생성을 선택하세요.

병합 요청 편집하여 종속성 추가하기

기존의 병합 요청을 편집하고 다른 병합 요청에 종속되도록 표시할 수 있습니다.

전제 조건:

  • 프로젝트에서 병합 요청을 편집할 수 있는 최소한 개발자 역할이 있어야 합니다.

다음을 수행하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하여 프로젝트를 찾습니다.
  2. 코드 > 병합 요청을 선택하고 병합 요청을 식별합니다.
  3. 편집을 선택하세요.
  4. 병합 요청 종속성에서 이 작업이 병합되기 전에 머지해야 하는 병합 요청의 참조 또는 전체 URL을 붙여넣기하세요. 참조는 path/to/project!merge_request_id 형식입니다.

병합 요청에서 종속성 제거하기

종속 병합 요청을 편집하고 종속성을 제거할 수 있습니다.

전제 조건:

  • 병합 요청을 편집할 수 있는 프로젝트에서 역할이 있어야 합니다.
  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하여 프로젝트를 찾습니다.
  2. 코드 > 병합 요청을 선택하고 병합 요청을 식별합니다.
  3. 편집을 선택하세요.
  4. 병합 요청 종속성으로 스크롤하고, 제거하려는 종속성 옆의 제거를 선택하세요.

    참고: 액세스할 수 없는 병합 요청의 종속성은 액세스할 수 없는 1개의 병합 요청으로 표시되며, 동일한 방법으로 제거할 수 있습니다.

  5. 변경 사항 저장을 선택하세요.

문제 해결

병합 요청 종속성 관리를 위한 API 지원

종속성을 관리하는 데 사용할 수 있는 API 지원이 없습니다. 자세한 내용은 issue #12551을 참조하세요.

프로젝트 가져오기 또는 내보내기 시 종속성 보존

프로젝트를 가져오거나 내보낼 때 종속성은 보존되지 않습니다. 자세한 내용은 issue #12549을 참조하세요.