프로젝트 포크 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": [ //deprecated, use `topics` instead  
      "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, // deprecated, use container_registry_access_level instead  
    "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"  
    }  
  }  
]  

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

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

필수 조건:

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

지원하는 속성:

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

프로젝트 간 포크 관계 삭제

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

필수 조건:

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

지원하는 속성:

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