프로젝트 포크 API

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated

REST API를 사용하여 프로젝트 포크를 관리할 수 있습니다.

프로젝트 포크

프로젝트를 개인 네임스페이스 또는 제공된 네임스페이스로 포크합니다.

필수 조건:

  • 인증해야 합니다.

프로젝트의 포킹 작업은 비동기적으로 이루어지며 백그라운드 작업에서 완료됩니다. 요청은 즉시 반환됩니다. 프로젝트의 포킹이 완료되었는지 확인하려면 새 프로젝트의 import_status를 쿼리하십시오.

POST /projects/:id/fork
속성 유형 필수 설명
id 정수 또는 문자열 프로젝트의 ID 또는 URL 인코딩된 경로.
branches 문자열 아니오 포크할 브랜치(모든 브랜치의 경우 비어 둡니다).
description 문자열 아니오 포킹 후 결과 프로젝트에 할당된 설명입니다.
mr_default_target_self 부울 아니오 포크된 프로젝트의 경우 이 프로젝트로 대상 병합 요청을 지정합니다. false인 경우 대상은 상위 프로젝트입니다.
name 문자열 아니오 포킹 후 결과 프로젝트에 할당된 이름입니다.
namespace_id 정수 아니오 프로젝트가 포크된 네임스페이스의 ID입니다.
namespace_path 문자열 아니오 프로젝트가 포크된 네임스페이스의 경로입니다.
namespace 정수 또는 문자열 아니오 (폐기됨) 프로젝트가 포크된 네임스페이스의 ID 또는 경로입니다.
path 문자열 아니오 포킹 후 결과 프로젝트에 할당된 경로입니다.
visibility 문자열 아니오 포킹 후 결과 프로젝트에 할당된 가시성 수준입니다.

프로젝트 포크 목록

지정된 프로젝트와 확립된 포크된 관계가 있는 사용 가능한 프로젝트 목록을 나열합니다.

GET /projects/:id/forks

지원되는 속성:

속성 유형 필수 설명
id 정수 또는 문자열 프로젝트의 ID 또는 URL 인코딩된 경로.
archived 부울 아니오 보관된 상태로 제한합니다.
membership 부울 아니오 현재 사용자가 멤버인 프로젝트로 제한합니다.
min_access_level 정수 아니오 현재 사용자의 최소한의 역할(access_level)로 제한합니다.
order_by 문자열 아니오 프로젝트를 id, name, path, created_at, updated_at, star_count, 또는 last_activity_at 필드로 정렬합니다. 기본값은 created_at입니다.
owned 부울 아니오 현재 사용자가 명시적으로 소유한 프로젝트로 제한합니다.
search 문자열 아니오 검색 기준과 일치하는 프로젝트 목록을 반환합니다.
simple 부울 아니오 각 프로젝트의 한정된 필드만 반환합니다. 인증되지 않은 경우 이 작업은 무효이며 한정된 필드만 반환됩니다.
sort 문자열 아니오 프로젝트를 asc 또는 desc로 정렬합니다. 기본값은 desc입니다.
starred 부울 아니오 현재 사용자가 표시한 프로젝트로 제한합니다.
statistics 부울 아니오 프로젝트 통계를 포함합니다. 적어도 기존의 Reporter 역할을 가진 사용자만 사용할 수 있습니다.
updated_after 날짜 및 시간 아니오 지정된 시간 이후에 마지막으로 업데이트된 프로젝트로 결과를 제한합니다. 형식: ISO 8601(YYYY-MM-DDTHH:MM:SSZ). GitLab 15.10에서 도입.
updated_before 날짜 및 시간 아니오 지정된 시간 전에 마지막으로 업데이트된 프로젝트로 결과를 제한합니다. 형식: ISO 8601(YYYY-MM-DDTHH:MM:SSZ). GitLab 15.10에서 도입.
visibility 문자열 아니오 public, internal, 또는 private로 가시성으로 제한합니다.
with_custom_attributes 부울 아니오 응답에 사용자 정의 속성을 포함합니다. (관리자 전용)
with_issues_enabled 부울 아니오 활성화된 이슈 기능으로 제한합니다.
with_merge_requests_enabled 부울 아니오 활성화된 병합 요청 기능으로 제한합니다.

예시 요청:

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

예시 응답:

[
  {
    "id": 3,
    "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
    "description_html": "<p data-sourcepos=\"1:1-1:56\" dir=\"auto\">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>",
    "default_branch": "main",
    "visibility": "internal",
    "ssh_url_to_repo": "git@example.com:diaspora/diaspora-project-site.git",
    "http_url_to_repo": "http://example.com/diaspora/diaspora-project-site.git",
    "web_url": "http://example.com/diaspora/diaspora-project-site",
    "readme_url": "http://example.com/diaspora/diaspora-project-site/blob/main/README.md",
    "tag_list": [ //폐기됨, 대신 `topics` 사용
      "example",
      "disapora project"
    ],
    "topics": [
      "example",
      "disapora project"
    ],
    "name": "Diaspora Project Site",
    "name_with_namespace": "Diaspora / Diaspora Project Site",
    "path": "diaspora-project-site",
    "path_with_namespace": "diaspora/diaspora-project-site",
    "repository_object_format": "sha1",
    "issues_enabled": true,
    "open_issues_count": 1,
    "merge_requests_enabled": true,
    "jobs_enabled": true,
    "wiki_enabled": true,
    "snippets_enabled": false,
    "can_create_merge_request_in": true,
    "resolve_outdated_diff_discussions": false,
    "container_registry_enabled": false, //폐기됨, 대신 container_registry_access_level 사용
    "container_registry_access_level": "disabled",
    "security_and_compliance_access_level": "disabled",
    "created_at": "2013-09-30T13:46:02Z",
    "updated_at": "2013-09-30T13:46:02Z",
    "last_activity_at": "2013-09-30T13:46:02Z",
    "creator_id": 3,
    "namespace": {
      "id": 3,
      "name": "Diaspora",
      "path": "diaspora",
      "kind": "group",
      "full_path": "diaspora"
    },
    "import_status": "none",
    "archived": true,
    "avatar_url": "http://example.com/uploads/project/avatar/3/uploads/avatar.png",
    "shared_runners_enabled": true,
    "group_runners_enabled": true,
    "forks_count": 0,
    "star_count": 1,
    "public_jobs": true,
    "shared_with_groups": [],
    "only_allow_merge_if_pipeline_succeeds": false,
    "allow_merge_on_skipped_pipeline": false,
    "restrict_user_defined_variables": false,
    "only_allow_merge_if_all_discussions_are_resolved": false,
    "remove_source_branch_after_merge": false,
    "request_access_enabled": false,
    "merge_method": "merge",
    "squash_option": "default_on",
    "autoclose_referenced_issues": true,
    "enforce_auth_checks_on_uploads": true,
    "suggestion_commit_message": null,
    "merge_commit_template": null,
    "container_registry_image_prefix": "registry.example.com/diaspora/diaspora-project-site",
    "_links": {
      "self": "http://example.com/api/v4/projects",
      "issues": "http://example.com/api/v4/projects/1/issues",
      "merge_requests": "http://example.com/api/v4/projects/1/merge_requests",
      "repo_branches": "http://example.com/api/v4/projects/1/repository_branches",
      "labels": "http://example.com/api/v4/projects/1/labels",
      "events": "http://example.com/api/v4/projects/1/events",
      "members": "http://example.com/api/v4/projects/1/members",
      "cluster_agents": "http://example.com/api/v4/projects/1/cluster_agents"
    }
  }
]

프로젝트 간 포크 관계 만들기

프로젝트 간에 포크 관계를 만듭니다.

전제 조건:

  • 프로젝트에서 관리자거나 소유자 역할이 할당되어 있어야 합니다.
POST /projects/:id/fork/:forked_from_id

지원되는 속성:

속성 유형 필수 설명
forked_from_id ID Yes 포크된 프로젝트의 ID입니다.
id 정수 또는 문자열 Yes 프로젝트의 ID 또는 URL 인코딩된 경로입니다.

프로젝트 간 포크 관계 삭제하기

프로젝트 간 포크 관계를 삭제합니다.

전제 조건:

  • 프로젝트에서 관리자거나 소유자 역할이 할당되어 있어야 합니다.
DELETE /projects/:id/fork

지원되는 속성:

속성 유형 필수 설명
id 정수 또는 문자열 Yes 프로젝트의 ID 또는 URL 인코딩된 경로입니다.