프로젝트 포크 API
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
이 API를 사용하여 GitLab 프로젝트의 포크를 관리합니다. 지정된 프로젝트의 포크를 생성합니다. 프로젝트의 포킹 작업은 비동기식으로 백그라운드 잡에서 완료됩니다. 서비스 계정을 사용하여 프로젝트를 포크할 때는 namespace_id 또는 namespace_path 중 하나를 제공해야 합니다.
이 API를 사용하여 GitLab 프로젝트의 포크를 관리합니다. 자세한 내용은 포크를 참조하세요.
프로젝트 포크 생성#
지정된 프로젝트의 포크를 생성합니다.
필수 요건:
- 인증되어 있어야 합니다.
프로젝트의 포킹 작업은 비동기식으로 백그라운드 잡에서 완료됩니다. 요청은 즉시 반환됩니다. 프로젝트 포크가 완료되었는지 확인하려면 새 프로젝트의 import_status를 쿼리하세요.
POST /projects/:id/fork
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
정수 또는 문자열 | Yes | 프로젝트의 ID 또는 URL 인코딩된 경로. |
branches |
문자열 | No | 포크할 브랜치(모든 브랜치는 비움). |
description |
문자열 | No | 포크 후 결과 프로젝트에 할당되는 설명. |
mr_default_target_self |
불리언 | No | 포크된 프로젝트의 경우 머지 리퀘스트를 이 프로젝트로 대상 지정합니다. false이면 대상은 업스트림 프로젝트입니다. |
name |
문자열 | No | 포크 후 결과 프로젝트에 할당되는 이름. |
namespace_id |
정수 | No | 프로젝트가 포크되는 네임스페이스의 ID. |
namespace_path |
문자열 | No | 프로젝트가 포크되는 네임스페이스의 경로. |
namespace |
정수 또는 문자열 | No | (더 이상 사용되지 않음) 프로젝트가 포크되는 네임스페이스의 ID 또는 경로. |
path |
문자열 | No | 포크 후 결과 프로젝트에 할당되는 경로. |
visibility |
문자열 | No | 포크 후 결과 프로젝트에 할당되는 공개 수준. |
서비스 계정을 사용하여 프로젝트를 포크할 때는 namespace_id 또는 namespace_path 중 하나를 제공해야 합니다.
서비스 계정은 개인 네임스페이스로 프로젝트를 포크할 수 없습니다. 자세한 내용은
그룹 또는 프로젝트에 서비스 계정 추가를 참조하세요.
프로젝트의 모든 포크 나열#
지정된 프로젝트의 모든 포크를 나열합니다. 액세스 가능한 포크만 반환됩니다.
GET /projects/:id/forks
지원되는 속성:
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
정수 또는 문자열 | Yes | 프로젝트의 ID 또는 URL 인코딩된 경로. |
archived |
불리언 | No | 보관 상태로 제한. |
membership |
불리언 | No | 현재 사용자가 멤버인 프로젝트로 제한. |
min_access_level |
정수 | No | 현재 사용자가 최소한 지정된 액세스 수준을 가진 프로젝트로 제한. 가능한 값: 5(최소 액세스), 10(게스트), 15(기획자), 20(보고자), 25(보안 관리자), 30(개발자), 40(유지 관리자), 50(소유자). |
order_by |
문자열 | No | id, name, path, created_at, updated_at, star_count, 또는 last_activity_at 필드로 정렬된 프로젝트 반환. 기본값은 created_at. |
owned |
불리언 | No | 현재 사용자가 명시적으로 소유한 프로젝트로 제한. |
search |
문자열 | No | 검색 기준과 일치하는 프로젝트 목록 반환. |
simple |
불리언 | No | 각 프로젝트에 대한 제한된 필드만 반환. 인증 없이는 이 작업은 효과 없음; 단순 필드만 반환됨. |
sort |
문자열 | No | asc 또는 desc 순서로 정렬된 프로젝트 반환. 기본값은 desc. |
starred |
불리언 | No | 현재 사용자가 즐겨찾기한 프로젝트로 제한. |
statistics |
불리언 | No | 프로젝트 통계 포함. Reporter, Developer, Maintainer 또는 Owner 역할의 사용자만 사용 가능. |
updated_after |
날짜시간 | No | 지정된 시간 이후에 마지막으로 업데이트된 프로젝트로 결과 제한. 형식: ISO 8601 (YYYY-MM-DDTHH:MM:SSZ). GitLab 15.10에서 도입됨. |
updated_before |
날짜시간 | No | 지정된 시간 이전에 마지막으로 업데이트된 프로젝트로 결과 제한. 형식: ISO 8601 (YYYY-MM-DDTHH:MM:SSZ). GitLab 15.10에서 도입됨. |
visibility |
문자열 | No | public, internal, 또는 private 공개 수준으로 제한. |
with_custom_attributes |
불리언 | No | 응답에 사용자 정의 속성 포함. (관리자만) |
with_issues_enabled |
불리언 | No | 이슈 기능이 활성화된 프로젝트로 제한. |
with_merge_requests_enabled |
불리언 | No | 머지 리퀘스트 기능이 활성화된 프로젝트로 제한. |
예시 요청:
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 | Yes | 포크된 프로젝트의 ID. |
id |
정수 또는 문자열 | Yes | 프로젝트의 ID 또는 URL 인코딩된 경로. |
포크 관계 삭제#
두 지정된 프로젝트 간의 포크 관계를 삭제합니다.
필수 요건:
- 관리자이거나 프로젝트에 Owner 역할이 할당되어 있어야 합니다.
DELETE /projects/:id/fork
지원되는 속성:
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
정수 또는 문자열 | Yes | 프로젝트의 ID 또는 URL 인코딩된 경로. |
