- 모든 프로젝트 리포지터리 스토리지 이동 검색
 - 프로젝트를 위한 모든 리포지터리 스토리지 이동 검색
 - 단일 프로젝트 리포지터리 스토리지 이동 검색
 - 프로젝트를 위한 단일 리포지터리 스토리지 이동 검색
 - 프로젝트용 리포지터리 이동 일정
 - 리포지터리 샤드의 모든 프로젝트에 대한 리포지터리 이동 일정
 
프로젝트 리포지터리 스토리지 이동 API
- GitLab 13.0에서 소개되었습니다.
 
위키 및 디자인 리포지터리를 포함한 프로젝트 리포지터리를 리포지터리간에 이동할 수 있습니다. 이 API는 예를 들어 Gitaly 클러스터로 이관할 때 도움이 될 수 있습니다.
프로젝트 리포지터리 스토리지 이동이 처리되는 동안, 다양한 상태로 전환됩니다. state의 값은 다음과 같습니다.
- 
initial: 레코드가 생성되었지만 백그라운드 작업이 아직 예약되지 않음 - 
scheduled: 백그라운드 작업이 예약되었습니다. - 
started: 프로젝트 리포지터리가 대상 리포지터리로 복사되고 있습니다. - 
replicated: 프로젝트가 이동되었습니다. - 
failed: 프로젝트 리포지터리의 복사에 실패하거나 체크섬이 일치하지 않습니다. - 
finished: 프로젝트가 이동되었고, 소스 리포지터리의 리포지터리가 삭제되었습니다. - 
cleanup failed: 프로젝트가 이동되었지만, 소스 리포지터리의 리포지터리를 삭제할 수 없었습니다. 
데이터 무결성을 보장하기 위해, 프로젝트는 이동 기간 동안 임시 읽기 전용 상태로 설정됩니다. 이 기간 동안 사용자가 새 커밋을 푸시하려고 하면 리포지터리가 임시 읽기 전용입니다. 나중에 다시 시도해주세요.라는 메시지를 받게 됩니다.
이 API를 사용하려면 관리자로 인증해야 합니다.
기타 리포지터리 유형은 다음을 참조하세요:
모든 프로젝트 리포지터리 스토리지 이동 검색
GET /project_repository_storage_moves
기본적으로 GET 요청은 API 결과가 페이징되기 때문에 한 번에 20개의 결과를 반환합니다.
예시 요청:
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/project_repository_storage_moves"
예시 응답:
[
  {
    "id": 1,
    "created_at": "2020-05-07T04:27:17.234Z",
    "state": "scheduled",
    "source_storage_name": "default",
    "destination_storage_name": "storage2",
    "project": {
      "id": 1,
      "description": null,
      "name": "project1",
      "name_with_namespace": "John Doe2 / project1",
      "path": "project1",
      "path_with_namespace": "namespace1/project1",
      "created_at": "2020-05-07T04:27:17.016Z"
    }
  }
]
프로젝트를 위한 모든 리포지터리 스토리지 이동 검색
GET /projects/:project_id/repository_storage_moves
기본적으로 GET 요청은 API 결과가 페이징되기 때문에 한 번에 20개의 결과를 반환합니다.
파라미터:
| 속성 | 유형 | 필수 | 설명 | 
|---|---|---|---|
project_id
 | 정수 | 예 | 프로젝트 ID | 
예시 요청:
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/1/repository_storage_moves"
예시 응답:
[
  {
    "id": 1,
    "created_at": "2020-05-07T04:27:17.234Z",
    "state": "scheduled",
    "source_storage_name": "default",
    "destination_storage_name": "storage2",
    "project": {
      "id": 1,
      "description": null,
      "name": "project1",
      "name_with_namespace": "John Doe2 / project1",
      "path": "project1",
      "path_with_namespace": "namespace1/project1",
      "created_at": "2020-05-07T04:27:17.016Z"
    }
  }
]
단일 프로젝트 리포지터리 스토리지 이동 검색
GET /project_repository_storage_moves/:repository_storage_id
파라미터:
| 속성 | 유형 | 필수 | 설명 | 
|---|---|---|---|
repository_storage_id
 | 정수 | 예 | 프로젝트 리포지터리 스토리지 이동 ID | 
예시 요청:
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/project_repository_storage_moves/1"
예시 응답:
{
  "id": 1,
  "created_at": "2020-05-07T04:27:17.234Z",
  "state": "scheduled",
  "source_storage_name": "default",
  "destination_storage_name": "storage2",
  "project": {
    "id": 1,
    "description": null,
    "name": "project1",
    "name_with_namespace": "John Doe2 / project1",
    "path": "project1",
    "path_with_namespace": "namespace1/project1",
    "created_at": "2020-05-07T04:27:17.016Z"
  }
}
프로젝트를 위한 단일 리포지터리 스토리지 이동 검색
GET /projects/:project_id/repository_storage_moves/:repository_storage_id
파라미터:
| 속성 | 유형 | 필수 | 설명 | 
|---|---|---|---|
project_id
 | 정수 | 예 | 프로젝트 ID | 
repository_storage_id
 | 정수 | 예 | 프로젝트 리포지터리 스토리지 이동 ID | 
예시 요청:
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/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",
  "project": {
    "id": 1,
    "description": null,
    "name": "project1",
    "name_with_namespace": "John Doe2 / project1",
    "path": "project1",
    "path_with_namespace": "namespace1/project1",
    "created_at": "2020-05-07T04:27:17.016Z"
  }
}
프로젝트용 리포지터리 이동 일정
POST /projects/:project_id/repository_storage_moves
매개변수:
| 속성 | 유형 | 필요 여부 | 설명 | 
|---|---|---|---|
project_id
 | integer | 예 | 프로젝트 ID | 
destination_storage_name
 | string | 아니오 | 대상 리포지터리 샤드의 이름. 제공되지 않으면 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/projects/1/repository_storage_moves"
예시 응답:
{
  "id": 1,
  "created_at": "2020-05-07T04:27:17.234Z",
  "state": "scheduled",
  "source_storage_name": "default",
  "destination_storage_name": "storage2",
  "project": {
    "id": 1,
    "description": null,
    "name": "project1",
    "name_with_namespace": "John Doe2 / project1",
    "path": "project1",
    "path_with_namespace": "namespace1/project1",
    "created_at": "2020-05-07T04:27:17.016Z"
  }
}
리포지터리 샤드의 모든 프로젝트에 대한 리포지터리 이동 일정
- 13.7 버전에서 도입됨.
 
소스 리포지터리 샤드에 저장된 각 프로젝트 리포지터리에 대한 리포지터리 이동을 일정에 등록합니다.
이 엔드포인트는 한꺼번에 모든 프로젝트를 이전합니다. 자세한 정보는 모든 프로젝트 이동를 참조하세요.
POST /project_repository_storage_moves
매개변수:
| 속성 | 유형 | 필요 여부 | 설명 | 
|---|---|---|---|
source_storage_name
 | string | 예 | 소스 리포지터리 샤드의 이름 | 
destination_storage_name
 | string | 아니오 | 대상 리포지터리 샤드의 이름. 제공되지 않으면 리포지터리 가중치에 따라 자동으로 선택됨. | 
예시 요청:
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/project_repository_storage_moves"
예시 응답:
{
  "message": "202 Accepted"
}
도움말