저장소 API
이 API를 사용하여 Git 저장소를 관리합니다. 지정된 프로젝트의 모든 저장소 파일 및 디렉토리를 반환합니다. 이 명령은 본질적으로 git ls-tree 명령과 동일한 기능을 제공합니다. GitLab 17.7은 요청된 경로를 찾을 수 없을 때의 오류 처리 동작을 변경합니다.
이 API를 사용하여 Git 저장소를 관리합니다.
프로젝트의 모든 저장소 트리 목록 조회#
지정된 프로젝트의 모든 저장소 파일 및 디렉토리를 반환합니다. 저장소가 공개적으로 접근 가능한 경우 인증 없이 이 엔드포인트에 접근할 수 있습니다.
이 명령은 본질적으로 git ls-tree 명령과 동일한 기능을 제공합니다. 자세한 내용은 Git 내부 문서의 트리 오브젝트를 참조하세요.
GitLab 17.7은 요청된 경로를 찾을 수 없을 때의 오류 처리 동작을 변경합니다.
이 엔드포인트는 이제 상태 코드 404 Not Found를 반환합니다. 이전에는 상태 코드가 200 OK였습니다.
구현이 누락된 경로에 대해 빈 배열을 포함한 200 상태 코드를 수신하는 것에 의존하는 경우,
새로운 404 응답을 처리하도록 오류 처리를 업데이트해야 합니다.
GET /projects/:id/repository/tree
지원되는 속성:
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
정수 또는 문자열 | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
page_token |
문자열 | 아니요 | 다음 페이지를 가져올 트리 레코드 ID. 키셋 페이지네이션에서만 사용됨. |
pagination |
문자열 | 아니요 | keyset이면 키셋 기반 페이지네이션 방법 사용. |
path |
문자열 | 아니요 | 저장소 내의 경로. 하위 디렉토리 내용을 가져오는 데 사용. |
per_page |
정수 | 아니요 | 페이지당 표시할 결과 수. 지정하지 않으면 기본값 20. 자세한 내용은 페이지네이션 참조. |
recursive |
불리언 | 아니요 | true이면 재귀적 트리를 가져옴. 기본값 false. |
ref |
문자열 | 아니요 | 저장소 브랜치 또는 태그 이름. 지정하지 않으면 기본 브랜치 사용. |
성공 시 200 OK 및 트리 오브젝트 배열을 반환합니다.
요청 예시:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/13083/repository/tree"
응답 예시:
[
{
"id": "a1e8f8d745cc87e3a9248358d9352bb7f9a0aeba",
"name": "html",
"type": "tree",
"path": "files/html",
"mode": "040000"
},
{
"id": "4535904260b1082e14f867f7a24fd8c21495bde3",
"name": "images",
"type": "tree",
"path": "files/images",
"mode": "040000"
},
{
"id": "31405c5ddef582c5a9b7a85230413ff90e2fe720",
"name": "js",
"type": "tree",
"path": "files/js",
"mode": "040000"
},
{
"id": "cc71111cfad871212dc99572599a568bfe1e7e00",
"name": "lfs",
"type": "tree",
"path": "files/lfs",
"mode": "040000"
},
{
"id": "fd581c619bf59cfdfa9c8282377bb09c2f897520",
"name": "markdown",
"type": "tree",
"path": "files/markdown",
"mode": "040000"
},
{
"id": "23ea4d11a4bdd960ee5320c5cb65b5b3fdbc60db",
"name": "ruby",
"type": "tree",
"path": "files/ruby",
"mode": "040000"
},
{
"id": "7d70e02340bac451f281cecf0a980907974bd8be",
"name": "whitespace",
"type": "blob",
"path": "files/whitespace",
"mode": "100644"
}
]
저장소에서 블롭 조회#
저장소의 블롭에 대한 크기 및 내용과 같은 정보를 반환합니다. 블롭 내용은 Base64로 인코딩됩니다. 저장소가 공개적으로 접근 가능한 경우 인증 없이 이 엔드포인트에 접근할 수 있습니다.
10 MB를 초과하는 블롭의 경우, 이 엔드포인트는 분당 5개 요청의 속도 제한이 있습니다.
GET /projects/:id/repository/blobs/:sha
지원되는 속성:
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
정수 또는 문자열 | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
sha |
문자열 | 예 | 블롭 SHA. |
성공 시 200 OK 및 다음 응답 속성을 반환합니다:
| 속성 | 유형 | 설명 |
|---|---|---|
content |
문자열 | Base64로 인코딩된 블롭 내용. |
encoding |
문자열 | 블롭 내용에 사용된 인코딩. |
sha |
문자열 | 블롭 SHA. |
size |
정수 | 블롭의 바이트 단위 크기. |
요청 예시:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/13083/repository/blobs/79f7bbd25901e8334750839545a9bd021f0e4c83"
응답 예시:
{
"size": 1476,
"encoding": "base64",
"content": "VGhpcyBpcyBhIGJpbmFyeSBmaWxl",
"sha": "79f7bbd25901e8334750839545a9bd021f0e4c83"
}
원시 블롭 내용 조회#
블롭 SHA로 블롭의 원시 파일 내용을 반환합니다. 저장소가 공개적으로 접근 가능한 경우 인증 없이 이 엔드포인트에 접근할 수 있습니다.
GET /projects/:id/repository/blobs/:sha/raw
지원되는 속성:
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
정수 또는 문자열 | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
sha |
문자열 | 예 | 블롭 SHA. |
요청 예시:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/13083/repository/blobs/79f7bbd25901e8334750839545a9bd021f0e4c83/raw"
저장소에서 파일 아카이브 조회#
지정된 저장소의 파일 아카이브를 반환합니다. 저장소가 공개적으로 접근 가능한 경우 인증 없이 이 엔드포인트에 접근할 수 있습니다.
GitLab.com 사용자의 경우, 이 엔드포인트는 분당 5개 요청의 속도 제한이 있습니다.
GET /projects/:id/repository/archive[.format]
format은 아카이브 형식의 선택적 접미사이며, 기본값은 tar.gz입니다. 예를 들어, archive.zip을 지정하면 ZIP 형식의 아카이브가 전송됩니다. 사용 가능한 옵션:
bz2tartar.bz2tar.gztb2tbztbz2zip
지원되는 속성:
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
정수 또는 문자열 | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
exclude_paths |
문자열 | 아니요 | 아카이브에서 제외할 쉼표로 구분된 경로 목록. |
include_lfs_blobs |
불리언 | 아니요 | true이면 LFS 오브젝트가 아카이브에 포함됨. false이면 LFS 오브젝트가 제외됨. 기본값 true. |
path |
문자열 | 아니요 | 다운로드할 저장소의 하위 경로. 빈 문자열이면 전체 저장소가 기본값. |
sha |
문자열 | 아니요 | 다운로드할 커밋 SHA. 태그, 브랜치 참조, SHA를 허용. 지정하지 않으면 기본 브랜치의 최신 커밋이 기본값. |
요청 예시:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.com/api/v4/projects/<project_id>/repository/archive?sha=<commit_sha>&path=<path>&exclude_paths=<path1,path2>"
브랜치, 태그 또는 커밋 비교#
히스토리
collapsed및too_large응답 속성이 GitLab 18.4에서 도입되었습니다.
지정된 프로젝트에서 두 브랜치, 태그 또는 커밋 간의 차이점을 반환합니다. 저장소가 공개적으로 접근 가능한 경우 인증 없이 이 엔드포인트에 접근할 수 있습니다.
compare_timeout이 true인 경우, 비교가 크기 제한을 초과했거나 시간이 초과되었습니다:
commits배열은 항상 완전합니다.diffs배열이 불완전할 수 있습니다.- 개별 diff 오브젝트는 내용이 제한을 초과한 경우 빈
diff문자열을 가질 수 있습니다.
GET /projects/:id/repository/compare
지원되는 속성:
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
from |
문자열 | 예 | 커밋 SHA 또는 브랜치 이름. |
id |
정수 또는 문자열 | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
to |
문자열 | 예 | 커밋 SHA 또는 브랜치 이름. |
from_project_id |
정수 | 아니요 | 비교할 프로젝트의 ID. |
straight |
불리언 | 아니요 | true이면 from과 to 간의 직접 비교 방식 사용 (from..to). false이면 머지 베이스를 사용한 비교 (from...to). 기본값 false. |
unidiff |
불리언 | 아니요 | true이면 diff를 통합 diff 형식으로 표시. 기본값 false. GitLab 16.5에서 도입. |
성공 시 200 OK 및 다음 응답 속성을 반환합니다:
| 속성 | 유형 | 설명 |
|---|---|---|
commit |
오브젝트 | 비교의 최신 커밋 세부 정보. |
commits |
오브젝트 배열 | 두 참조 사이의 커밋. compare_timeout이 true인 경우에도 항상 완전함. |
commits[].author_email |
문자열 | 커밋 작성자의 이메일 주소. |
commits[].author_name |
문자열 | 커밋 작성자의 이름. |
commits[].created_at |
datetime | 커밋 생성 타임스탬프. |
commits[].id |
문자열 | 전체 커밋 SHA. |
commits[].short_id |
문자열 | 짧은 커밋 SHA. |
commits[].title |
문자열 | 커밋 제목. |
compare_same_ref |
불리언 | true이면 비교에서 from과 to에 동일한 참조를 사용. |
compare_timeout |
불리언 | true이면 비교가 크기 제한을 초과했거나 시간이 초과됨. diffs 배열이 불완전할 수 있음. |
diffs |
오브젝트 배열 | 파일 차이점 목록. |
diffs[].a_mode |
문자열 | 이전 파일 모드. |
diffs[].b_mode |
문자열 | 새 파일 모드. |
diffs[].collapsed |
불리언 | true이면 파일 diff가 제외되었지만 요청 시 가져올 수 있음. |
diffs[].deleted_file |
불리언 | true이면 파일이 제거됨. |
diffs[].diff |
문자열 | 파일에 대한 변경 사항을 보여주는 diff 내용. |
diffs[].new_file |
불리언 | true이면 파일이 추가됨. |
diffs[].new_path |
문자열 | 파일의 새 경로. |
diffs[].old_path |
문자열 | 파일의 이전 경로. |
diffs[].renamed_file |
불리언 | true이면 파일이 이름 변경됨. |
diffs[].too_large |
불리언 | true이면 파일 diff가 제외되어 검색할 수 없음. |
web_url |
문자열 | 비교를 보기 위한 웹 URL. |
요청 예시:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/repository/compare?from=main&to=feature"
응답 예시:
{
"commit": {
"id": "12d65c8dd2b2676fa3ac47d955accc085a37a9c1",
"short_id": "12d65c8dd2b",
"title": "JS fix",
"author_name": "Example User",
"author_email": "user@example.com",
"created_at": "2014-02-27T10:27:00+02:00"
},
"commits": [{
"id": "12d65c8dd2b2676fa3ac47d955accc085a37a9c1",
"short_id": "12d65c8dd2b",
"title": "JS fix",
"author_name": "Example User",
"author_email": "user@example.com",
"created_at": "2014-02-27T10:27:00+02:00"
}],
"diffs": [{
"old_path": "files/js/application.js",
"new_path": "files/js/application.js",
"a_mode": null,
"b_mode": "100644",
"diff": "@@ -24,8 +24,10 @@\n //= require g.raphael-min\n //= require g.bar-min\n //= require branch-graph\n-//= require highlightjs.min\n-//= require ace/ace\n //= require_tree .\n //= require d3\n //= require underscore\n+\n+function fix() { \n+ alert(\"Fixed\")\n+}",
"collapsed": false,
"too_large": false,
"new_file": false,
"renamed_file": false,
"deleted_file": false
}],
"compare_timeout": false,
"compare_same_ref": false,
"web_url": "https://gitlab.example.com/janedoe/gitlab-foss/-/compare/ae73cb07c9eeaf35924a10f713b364d32b2dd34f...0b4bc9a49b562e85de7cc9e834518ea6828729b9"
}
기여자 목록 조회#
히스토리
ref가 GitLab 17.4에서 도입되었습니다.
저장소 기여자 목록을 가져옵니다. 저장소가 공개적으로 접근 가능한 경우 인증 없이 이 엔드포인트에 접근할 수 있습니다.
반환된 커밋 수에는 머지 커밋이 포함되지 않습니다.
GET /projects/:id/repository/contributors
지원되는 속성:
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
정수 또는 문자열 | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
order_by |
문자열 | 아니요 | name, email, commits (커밋 수)로 기여자 정렬. 지정하지 않으면 커밋 날짜로 정렬. |
ref |
문자열 | 아니요 | 저장소 브랜치 또는 태그 이름. 지정하지 않으면 기본 브랜치 사용. |
sort |
문자열 | 아니요 | 기여자를 asc 또는 desc 순서로 반환. 기본값 asc. |
성공 시 200 OK 및 다음 응답 속성을 반환합니다:
| 속성 | 유형 | 설명 |
|---|---|---|
additions |
정수 | 기여자가 추가한 라인 수. |
commits |
정수 | 기여자의 커밋 수. |
deletions |
정수 | 기여자가 삭제한 라인 수. |
email |
문자열 | 기여자의 이메일 주소. |
name |
문자열 | 기여자의 이름. |
요청 예시:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/7/repository/contributors"
응답 예시:
[{
"name": "Example User",
"email": "example@example.com",
"commits": 117,
"additions": 0,
"deletions": 0
}, {
"name": "Sample User",
"email": "sample@example.com",
"commits": 33,
"additions": 0,
"deletions": 0
}]
머지 베이스 조회#
커밋 SHA, 브랜치 이름, 태그 등 2개 이상의 참조에 대한 공통 조상을 가져옵니다.
GET /projects/:id/repository/merge_base
지원되는 속성:
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
id |
정수 또는 문자열 | 예 | 프로젝트의 ID 또는 URL 인코딩된 경로. |
refs |
배열 | 예 | 공통 조상을 찾을 참조. 여러 참조를 허용. |
성공 시 200 OK 및 다음 응답 속성을 반환합니다:
| 속성 | 유형 | 설명 |
|---|---|---|
author_email |
문자열 | 작성자의 이메일 주소. |
author_name |
문자열 | 작성자의 이름. |
authored_date |
datetime | 커밋이 작성된 날짜. |
committed_date |
datetime | 커밋이 커밋된 날짜. |
committer_email |
문자열 | 커밋터의 이메일 주소. |
committer_name |
문자열 | 커밋터의 이름. |
created_at |
datetime | 커밋 생성 타임스탬프. |
extended_trailers |
오브젝트 | Git 트레일러에 대한 확장 정보. |
id |
문자열 | 전체 커밋 SHA. |
message |
문자열 | 전체 커밋 메시지. |
parent_ids |
배열 | 부모 커밋 SHA 목록. |
short_id |
문자열 | 짧은 커밋 SHA. |
title |
문자열 | 커밋 제목. |
trailers |
오브젝트 | 커밋 메시지에서 파싱된 Git 트레일러. |
web_url |
문자열 | GitLab 웹 인터페이스에서 커밋을 보기 위한 URL. |
요청 예시 (가독성을 위해 refs를 줄임):
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/projects/5/repository/merge_base?refs[]=304d257d&refs[]=0031876f"
응답 예시:
{
"id": "1a0b36b3cdad1d2ee32457c102a8c0b7056fa863",
"short_id": "1a0b36b3",
"title": "Initial commit",
"created_at": "2014-02-27T08:03:18.000Z",
"parent_ids": [],
"message": "Initial commit\n",
"author_name": "Example User",
"author_email": "user@example.com",
"authored_date": "2014-02-27T08:03:18.000Z",
"committer_name": "Example User",
"committer_email": "user@example.com",
"committed_date": "2014-02-27T08:03:18.000Z",
"trailers": {},
"extended_trailers": {},
"web_url": "https://gitlab.example.com/example-group/example-project/-/commit/1a0b36b3cdad1d2ee32457c102a8c0b7056fa863"
}
체인지로그 데이터 생성#
히스토리
- GitLab 17.7에서 CI/CD 잡 토큰을 통한 인증이 도입되었습니다.
config_file_ref속성이 GitLab 18.2에서 도입되었습니다.
저장소의 커밋을 기반으로 체인지로그 데이터를 생성합니다. 체인지로그 파일에는 커밋하지 않습니다.
POST /projects/:id/repository/changelog와 정확히 동일하게 동작하지만, 체인지로그 데이터가 체인지로그 파일에 커밋되지 않습니다.
GET /projects/:id/repository/changelog
지원되는 속성:
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
version |
문자열 | 예 | 체인지로그를 생성할 버전. 형식은 시맨틱 버저닝을 따라야 함. |
config_file |
문자열 | 아니요 | 프로젝트의 Git 저장소에 있는 체인지로그 구성 파일 경로. 기본값 .gitlab/changelog_config.yml. |
config_file_ref |
문자열 | 아니요 | 체인지로그 구성 파일이 정의된 Git 참조 (예: 브랜치). 기본 저장소 브랜치가 기본값. |
date |
datetime | 아니요 | 릴리스의 날짜 및 시간. ISO 8601 형식 사용. 예: 2016-03-11T03:45:40Z. 기본값은 현재 시간. |
from |
문자열 | 아니요 | 체인지로그 생성에 사용할 커밋 범위의 시작 (SHA). 이 커밋 자체는 목록에 포함되지 않음. |
to |
문자열 | 아니요 | 체인지로그에 사용할 커밋 범위의 끝 (SHA). 이 커밋이 목록에 포함됨. 기본값은 기본 프로젝트 브랜치의 HEAD. |
trailer |
문자열 | 아니요 | 커밋 포함에 사용할 Git 트레일러. 기본값 Changelog. |
성공 시 200 OK 및 다음 응답 속성을 반환합니다:
| 속성 | 유형 | 설명 |
|---|---|---|
notes |
문자열 | Markdown 형식으로 생성된 체인지로그 데이터. |
요청 예시:
curl --header "PRIVATE-TOKEN: token" \
--url "https://gitlab.com/api/v4/projects/42/repository/changelog?version=1.0.0"
응답 예시 (가독성을 위해 줄 바꿈 추가):
{
"notes": "## 1.0.0 (2021-11-17)\n\n### feature (2 changes)\n\n-
[Title 2](namespace13/project13@ad608eb642124f5b3944ac0ac772fecaf570a6bf)
([merge request](namespace13/project13!2))\n-
[Title 1](namespace13/project13@3c6b80ff7034fa0d585314e1571cc780596ce3c8)
([merge request](namespace13/project13!1))\n"
}
파일에 체인지로그 데이터 추가#
히스토리
- GitLab 17.3에서 일반적으로 사용 가능합니다.
changelog_commits_limitation기능 플래그가 제거되었습니다. config_file_ref가 GitLab 18.2에서 도입되었습니다.
저장소의 커밋을 기반으로 체인지로그 데이터를 생성하고 체인지로그 파일에 커밋합니다.
시맨틱 버전과 커밋 범위가 주어지면, GitLab은 특정 Git 트레일러를 사용하는 모든 커밋에 대한 체인지로그를 생성합니다. GitLab은 프로젝트의 Git 저장소에 있는 체인지로그 파일에 새로운 Markdown 형식의 섹션을 추가합니다. 출력 형식은 사용자 지정할 수 있습니다.
성능 및 보안상의 이유로, 체인지로그 구성 파싱은 2초로 제한됩니다. 이 제한은 잘못된 체인지로그 템플릿으로 인한 잠재적 DoS 공격을 방지하는 데 도움이 됩니다. 요청이 시간 초과되면, changelog_config.yml 파일 크기를 줄이는 것을 고려하세요.
사용자 문서는 체인지로그를 참조하세요.
POST /projects/:id/repository/changelog
체인지로그는 다음 속성을 지원합니다:
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
version 1 |
문자열 | 예 | 체인지로그를 생성할 버전. 형식은 시맨틱 버저닝을 따라야 함. |
branch |
문자열 | 아니요 | 체인지로그 변경 사항을 커밋할 브랜치. 기본값은 프로젝트의 기본 브랜치. |
config_file |
문자열 | 아니요 | 프로젝트의 Git 저장소에 있는 체인지로그 구성 파일 경로. 기본값 .gitlab/changelog_config.yml. |
config_file_ref |
문자열 | 아니요 | 체인지로그 구성 파일이 정의된 Git 참조 (예: 브랜치). 기본 저장소 브랜치가 기본값. |
date |
datetime | 아니요 | 릴리스의 날짜 및 시간. 기본값은 현재 시간. |
file |
문자열 | 아니요 | 변경 사항을 커밋할 파일. 기본값 CHANGELOG.md. |
from 2 |
문자열 | 아니요 | 체인지로그에 포함할 커밋 범위의 시작을 표시하는 커밋의 SHA. 이 커밋은 체인지로그에 포함되지 않음. |
message |
문자열 | 아니요 | 변경 사항을 커밋할 때 사용할 커밋 메시지. 기본값은 version 인수 값인 X를 사용하여 Add changelog for version X. |
to |
문자열 | 아니요 | 체인지로그에 포함할 커밋 범위의 끝을 표시하는 커밋의 SHA. 이 커밋이 체인지로그에 포함됨. 기본값은 branch 속성에 지정된 브랜치. 최대 15000개의 커밋으로 제한. |
trailer |
문자열 | 아니요 | 커밋 포함에 사용할 Git 트레일러. 기본값 Changelog. 대소문자 구분: Example은 example 또는 eXaMpLE과 일치하지 않음. |
각주:
-
version속성은v접두사를 포함하거나 생략할 수 있습니다.1.0.0과v1.0.0모두 동일한 결과를 생성합니다. GitLab 17.0에서 도입되었습니다. -
from이 지정되지 않으면, GitLab은 지정된 버전 이전의 마지막 안정적인 버전 태그를 자동으로 찾습니다. GitLab은 시맨틱 버저닝을 따르는X.Y.Z또는vX.Y.Z형식의 태그를 인식합니다.예를 들어,
version이2.1.0이면 GitLab은 태그v2.0.0을 사용합니다.version이1.1.1또는1.2.0이면 GitLab은 태그v1.1.0을 사용합니다.v1.0.0-pre1과 같은 사전 릴리스 태그는 무시됩니다.적합한 태그를 찾을 수 없으면, API가 오류를 반환하고
from속성을 명시적으로 지정해야 합니다.
예시#
이 예시는 cURL을 사용하여 HTTP 요청을 수행합니다. 예시 명령에서 다음 값을 사용합니다:
- 프로젝트 ID: 42
- 위치: GitLab.com에 호스팅됨
- 예시 API 토큰:
token
이 명령은 버전 1.0.0의 체인지로그를 생성합니다.
커밋 범위:
- 마지막 릴리스의 태그로 시작.
- 대상 브랜치의 마지막 커밋으로 끝남. 기본 대상 브랜치는 프로젝트의 기본 브랜치.
마지막 태그가 v0.9.0이고 기본 브랜치가 main인 경우, 이 예시에 포함된 커밋 범위는 v0.9.0..main입니다:
curl --request POST \
--header "PRIVATE-TOKEN: token" \
--data "version=1.0.0" \
--url "https://gitlab.com/api/v4/projects/42/repository/changelog"
다른 브랜치에서 데이터를 생성하려면 branch 파라미터를 지정합니다. 이 명령은 foo 브랜치에서 데이터를 생성합니다:
curl --request POST \
--header "PRIVATE-TOKEN: token" \
--data "version=1.0.0&branch=foo" \
--url "https://gitlab.com/api/v4/projects/42/repository/changelog"
다른 트레일러를 사용하려면 trailer 파라미터를 사용합니다:
curl --request POST --header "PRIVATE-TOKEN: token" \
--data "version=1.0.0&trailer=Type" \
--url "https://gitlab.com/api/v4/projects/42/repository/changelog"
다른 파일에 결과를 저장하려면 file 파라미터를 사용합니다:
curl --request POST \
--header "PRIVATE-TOKEN: token" \
--data "version=1.0.0&file=NEWS" \
--url "https://gitlab.com/api/v4/projects/42/repository/changelog"
브랜치를 파라미터로 지정하려면 to 속성을 사용합니다:
curl --request GET \
--header "PRIVATE-TOKEN: token" \
--url "https://gitlab.com/api/v4/projects/42/repository/changelog?version=1.0.0&to=release/x.x.x"
수동 체인지로그 파일에서 마이그레이션#
기존 수동으로 관리되는 체인지로그 파일에서 Git 트레일러를 사용하는 방식으로 마이그레이션할 때, 체인지로그 파일이 예상 형식과 일치하는지 확인하세요. 그렇지 않으면 API로 추가된 새 체인지로그 항목이 예상치 못한 위치에 삽입될 수 있습니다. 예를 들어, 수동으로 관리되는 체인지로그 파일의 버전 값이 X.Y.Z 대신 vX.Y.Z로 지정된 경우, Git 트레일러를 사용하여 추가된 새 체인지로그 항목이 체인지로그 파일의 끝에 추가됩니다.
이슈 444183은 체인지로그 파일에서 버전 헤더 형식을 사용자 지정하는 것을 제안합니다. 하지만 해당 이슈가 완료될 때까지 체인지로그 파일에서 예상되는 버전 헤더 형식은 X.Y.Z입니다.
헬스#
히스토리
- GitLab 17.10에서
project_repositories_health기능 플래그 뒤에 보호되어 도입되었습니다. - GitLab 18.1에서 새 필드가 추가되었습니다.
프로젝트 저장소의 헬스와 관련된 통계를 가져옵니다.
generate가 true인 경우 이 엔드포인트는 프로젝트당 시간당 5개 요청으로 속도 제한됩니다. 이 엔드포인트는 저장소에 푸시 접근 권한이 있는 사용자에게만 제공됩니다.
GET /projects/:id/repository/health
지원되는 속성:
| 속성 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
generate |
불리언 | 아니요 | true이면 새 헬스 리포트가 생성됩니다. 엔드포인트가 404를 반환하면 이 옵션을 설정하세요. |
성공 시 200 OK 및 저장소 헬스 통계를 반환합니다.
요청 예시:
curl --header "PRIVATE-TOKEN: token" \
--url "https://gitlab.com/api/v4/projects/42/repository/health"
응답 예시:
{
"size": 2619748827,
"references": {
"loose_count": 13,
"packed_size": 333978,
"reference_backend": "REFERENCE_BACKEND_FILES"
},
"objects": {
"size": 2180475409,
"recent_size": 2180453999,
"stale_size": 21410,
"keep_size": 0,
"packfile_count": 1,
"reverse_index_count": 1,
"cruft_count": 0,
"keep_count": 0,
"loose_objects_count": 36,
"stale_loose_objects_count": 36,
"loose_objects_garbage_count": 0
},
"commit_graph": {
"commit_graph_chain_length": 1,
"has_bloom_filters": true,
"has_generation_data": true,
"has_generation_data_overflow": false
},
"bitmap": null,
"multi_pack_index": {
"packfile_count": 1,
"version": 1
},
"multi_pack_index_bitmap": {
"has_hash_cache": true,
"has_lookup_table": true,
"version": 1
},
"alternates": null,
"is_object_pool": false,
"last_full_repack": {
"seconds": 1745892013,
"nanos": 0
},
"updated_at": "2025-05-14T02:31:08.022Z"
}
응답의 각 필드에 대한 설명은 RepositoryInfoResponse protobuf 메시지를 참조하세요.
관련 항목#
- 체인지로그에 대한 사용자 문서
