그룹 저장소 이동 API

세부 정보: Tier: 프리미엄, 얼티메이트 Offering: Self-managed, GitLab Dedicated

그룹 위키 저장소는 저장소 간에 이동할 수 있습니다. 이 API는 예를 들어 Gitaly Cluster로 이전 또는 그룹 위키를 이전하는 데 도움을 줄 수 있습니다. 이 API는 그룹 내 프로젝트 저장소를 관리하지 않습니다. 프로젝트 이동을 예약하려면 프로젝트 저장소 이동 API를 사용하세요.

그룹 저장소 이동이 처리되는 동안 다양한 상태를 거칩니다. state의 값은 다음과 같습니다:

  • initial: 레코드가 생성되었지만 백그라운드 작업이 아직 예약되지 않았습니다.
  • scheduled: 백그라운드 작업이 예약되었습니다.
  • started: 그룹 저장소가 대상 저장소로 복사 중입니다.
  • replicated: 그룹이 이동되었습니다.
  • failed: 그룹 저장소가 복사되지 못했거나 체크섬이 일치하지 않았습니다.
  • finished: 그룹이 이동되었으며 원본 저장소의 저장소가 삭제되었습니다.
  • cleanup failed: 그룹이 이동되었지만 원본 저장소의 저장소를 삭제할 수 없었습니다.

데이터 무결성을 보장하기 위해 그룹은 이동 기간 동안 임시 읽기 전용 상태로 설정됩니다. 이 기간 동안 사용자가 새 커밋을 푸시하려고 하면 다음 메시지가 표시됩니다:

저장소가 일시적으로 읽기 전용입니다. 나중에 다시 시도하세요.

이 API를 사용하려면 관리자로 인증해야 합니다.

기타 타입의 저장소를 이동할 수 있는 API도 있습니다:

모든 그룹 저장소 이동 검색

GET /group_repository_storage_moves

기본적으로 GET 요청은 API 결과가 페이지별로 20개씩 반환합니다.

예시 요청:

curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/group_repository_storage_moves"

예시 응답:

[
  {
    "id": 1,
    "created_at": "2020-05-07T04:27:17.234Z",
    "state": "scheduled",
    "source_storage_name": "default",
    "destination_storage_name": "storage2",
    "group": {
      "id": 283,
      "web_url": "https://gitlab.example.com/groups/testgroup",
      "name": "testgroup"
    }
  }
]

단일 그룹 저장소 이동 검색

단일 그룹의 모든 저장소 이동을 검색하려면 다음 엔드포인트를 사용할 수 있습니다:

GET /groups/:group_id/repository_storage_moves

기본적으로 GET 요청은 API 결과가 페이지별로 20개씩 반환합니다.

지원되는 속성:

속성 유형 필수 설명
group_id integer 그룹 ID.

예시 요청:

curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/1/repository_storage_moves"

예시 응답:

[
  {
    "id": 1,
    "created_at": "2020-05-07T04:27:17.234Z",
    "state": "scheduled",
    "source_storage_name": "default",
    "destination_storage_name": "storage2",
    "group": {
      "id": 283,
      "web_url": "https://gitlab.example.com/groups/testgroup",
      "name": "testgroup"
    }
  }
]

단일 그룹 저장소 이동 가져오기

기존의 모든 저장소 이동을 통해 단일 저장소 이동을 검색하려면 다음 엔드포인트를 사용할 수 있습니다:

GET /group_repository_storage_moves/:repository_storage_id

지원되는 속성:

속성 유형 필수 설명
repository_storage_id integer 그룹 저장소 이동 ID.

예시 요청:

curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/group_repository_storage_moves/1"

예시 응답:

{
  "id": 1,
  "created_at": "2020-05-07T04:27:17.234Z",
  "state": "scheduled",
  "source_storage_name": "default",
  "destination_storage_name": "storage2",
  "group": {
    "id": 283,
    "web_url": "https://gitlab.example.com/groups/testgroup",
    "name": "testgroup"
  }
}

그룹을 위한 단일 저장소 이동 가져오기

특정 그룹에 대한 저장소 이동을 다음 엔드포인트를 통해 가져올 수 있습니다.

GET /groups/:group_id/repository_storage_moves/:repository_storage_id

지원되는 속성:

속성 유형 필요 설명
group_id 정수 그룹의 ID입니다.
repository_storage_id 정수 그룹 저장소 이동의 ID입니다.

예시 요청:

curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/1/repository_storage_moves/1"

예시 응답:

{
  "id": 1,
  "created_at": "2020-05-07T04:27:17.234Z",
  "state": "scheduled",
  "source_storage_name": "default",
  "destination_storage_name": "storage2",
  "group": {
    "id": 283,
    "web_url": "https://gitlab.example.com/groups/testgroup",
    "name": "testgroup"
  }
}

그룹을 위한 저장소 이동 일정화

그룹을 위한 저장소 이동을 예약합니다. 이 엔드포인트는 다음과 같습니다:

  • 그룹 위키 저장소만 이동합니다.
  • 그룹 내 프로젝트의 저장소를 이동하지 않습니다. 프로젝트 이동을 예약하려면 프로젝트 저장소 이동 API를 사용하세요.
POST /groups/:group_id/repository_storage_moves

지원되는 속성:

속성 유형 필요 설명
group_id 정수 그룹의 ID입니다.
destination_storage_name 문자열 아니요 대상 저장소 샤드의 이름입니다. GitLab 13.5 및 이후에는 제공되지 않으면 저장소 가중치에 따라 선택됩니다.

예시 요청:

curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Content-Type: application/json" \
     --data '{"destination_storage_name":"storage2"}' \
     "https://gitlab.example.com/api/v4/groups/1/repository_storage_moves"

예시 응답:

{
  "id": 1,
  "created_at": "2020-05-07T04:27:17.234Z",
  "state": "scheduled",
  "source_storage_name": "default",
  "destination_storage_name": "storage2",
  "group": {
    "id": 283,
    "web_url": "https://gitlab.example.com/groups/testgroup",
    "name": "testgroup"
  }
}

저장소 샤드에서 모든 그룹의 저장소 이동 일정화

소스 저장소 샤드에 저장된 각 그룹 저장소에 대한 저장소 이동을 예약합니다. 이 엔드포인트는 모든 그룹을 한꺼번에 이동합니다. 자세한 내용은 모든 그룹 이동을 참조하세요.

POST /group_repository_storage_moves

지원되는 속성:

속성 유형 필요 설명
source_storage_name 문자열 소스 저장소 샤드의 이름입니다.
destination_storage_name 문자열 아니요 대상 저장소 샤드의 이름입니다. 제공되지 않으면 저장소 가중치에 따라 선택됩니다.

예시 요청:

curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Content-Type: application/json" \
     --data '{"source_storage_name":"default"}' \
     "https://gitlab.example.com/api/v4/group_repository_storage_moves"

예시 응답:

{
  "message": "202 Accepted"
}