레지스트리 참조
개요
이 문서에서는 각 종류의 레지스트리에 대한 구현 세부 정보를 설명합니다. 특히 이 파일은 각 레지스트리 종류에 대한 권장 레이아웃 및 해당 버전 데이터베이스예상 내용과 관련이 있습니다.
메모
이 문서에는 사용자 지정 레지스트리를 구현하는 방법에 대한 정보가 포함되어 있습니다. 프로젝트에서 사용자 지정 레지스트리를 사용하는 방법에 대한 자세한 내용은 레지스트리 사용 문서를 참조하세요.
Git 레지스트리
Git 레지스트리의 기준 파일 레이아웃
최상위 필드
baseine.json
파일의 최상위 개체는 사전이며, 이 사전의 각 키는 초기 계획 명명된. Git 레지스트리의 구현 세부 정보로 인해 이름이 "default"인 명명된 기준 존재하고 레지스트리의 모든 포트를 기준 버전에 매핑하는 것을 포함해야 합니다.
이름 | 형 | 묘사 |
---|---|---|
default |
BaselineObject | Git 레지스트리에 필요한 기본 기준입니다. |
명명된 기준선 | BaselineObject | 추가 기준. 필드 이름은 기준선 이름에 해당합니다. |
BaselineObject
기준 개체는 레지스트리의 포트 이름에 해당하는 각 키와 해당 값이 최신 버전의 포트인 사전입니다.
이름 | 형 | 묘사 |
---|---|---|
포트 이름 | BaselineVersionObject | 포트 이름을 최신 버전으로 매핑 |
BaselineVersionObject
이름 | 형 | 묘사 |
---|---|---|
baseline |
문자열 | 레지스트리에서 사용 가능한 최신 버전의 포트에 해당하는 문자열입니다. |
port-version |
정수 | 레지스트리의 최신 포트 버전에 해당하는 정수입니다. |
Git 레지스트리의 baseline.json
파일 예제
버전 1.0.0#1
foo
단일 포트가 포함된 레지스트리에서 baseline.json
파일 콘텐츠는 다음과 같습니다.
{
"default": {
"foo": {
"baseline": "1.0.0",
"port-version": 1
}
}
}
Git 레지스트리의 버전 파일 레이아웃
versions
디렉터리에는 리포지토리의 기록에서 해당 버전을 검색하는 방법과 함께 레지스트리에 포함된 패키지 버전에 대한 모든 정보가 포함됩니다.
최상위 필드
이름 | 형 | 묘사 |
---|---|---|
versions |
VersionObject[] | 버전 개체의 배열입니다. 레지스트리 기록에 있는 포트의 각 버전에 대한 항목을 포함합니다. |
VersionObject
이름 | 형 | 묘사 |
---|---|---|
git-tree |
문자열 | 포트 콘텐츠를 검색하는 데 사용되는 git 트리 SHA |
version version-semver version-date version-string |
문자열 | 업스트림 버전 정보 |
포트 버전 | 정수 | 포트 파일 수정 |
Git 레지스트리 버전 파일의 예
{
"versions": [
{
"git-tree": "963060040c3ca463d17136e39c7317efb15eb6a5",
"version": "1.2.0",
"port-version": 0
},
{
"git-tree": "548c90710d59c174aa9ab10a24deb69f1d75ff8f",
"version": "1.1.0",
"port-version": 0
},
{
"git-tree": "67d60699c271b7716279fdea5a5c6543929eb90e",
"version": "1.0.0",
"port-version": 0
}
]
}
git-tree
SHA 가져오기
vcpkg는 Git의 기능을 사용하여 커밋 기록에 포함된 특정 버전의 포트를 검색합니다. 사용되는 방법은 포트의 버전 파일에 지정된 대로 리포지토리에서 git-tree
개체를 검색하는 것입니다.
Git 레지스트리의 각 포트 디렉터리에는 연결된 고유한 SHA(버전 파일의 git-tree
참조)가 있습니다. SHA는 디렉터리의 내용을 사용하여 계산됩니다. 디렉터리를 수정하는 리포지토리에 변경 내용이 커밋될 때마다 해당 SHA가 다시 계산됩니다.
Git을 사용하면 특정 SHA를 알고 있는 경우 해당 기록의 어느 시점에서든 지정된 디렉터리의 콘텐츠를 검색할 수 있습니다. 이 기능을 사용하여 vcpkg는 해당 SHA(git-tree
)를 사용하여 특정 포트 버전을 인덱싱할 수 있습니다.
지정된 수정 버전에서 포트 디렉터리의 SHA를 가져오려면 다음 Git 명령을 사용할 수 있습니다.
git -C <path/to/ports> ls-tree --format='%(objectname)' <commit sha> -- <portname>
본보기:
git -C %VCPKG_ROOT%/ports ls-tree --format='%(objectname)' HEAD -- curl
6ef1763f3cbe570d6378632c9b5793479c37fb07
이 명령은 현재 수정 버전(HEAD
)에서 curl
포트를 포함하는 디렉터리의 SHA를 반환합니다.
명령 git show <git-tree>
사용하여 git-tree
내용을 표시할 수 있습니다.
git show 6ef1763f3cbe570d6378632c9b5793479c37fb07
tree 6ef1763f3cbe570d6378632c9b5793479c37fb07
0005_remove_imp_suffix.patch
0020-fix-pc-file.patch
0022-deduplicate-libs.patch
cmake-config.patch
cmake-project-include.cmake
dependencies.patch
export-components.patch
portfile.cmake
redact-input-vars.diff
usage
vcpkg-cmake-wrapper.cmake
vcpkg.json
또는 git show <git-tree>:<file>
있는 특정 파일의 내용:
git show 6ef1763f3cbe570d6378632c9b5793479c37fb07:usage
curl is compatible with built-in CMake targets:
find_package(CURL REQUIRED)
target_link_libraries(main PRIVATE CURL::libcurl)
수동 프로세스에서 이러한 Git 명령을 사용하여 데이터베이스 파일을 최신 상태로 지정하는 작업은 어려울 수 있습니다. 따라서 리포지토리가 권장되는 레지스트리 구조따르는 한 프로세스를 자동화하는 x-add-version
명령사용하는 것이 좋습니다. Git 레지스트리에서 포트를 게시하는 방법에 대한 예제는 자습서: Git 문서를 사용하여 프라이빗 vcpkg 레지스트리에 패키지 게시를 참조하세요.
파일 시스템 레지스트리
파일 시스템 레지스트리의 기준 파일 레이아웃
최상위 필드
baseine.json
파일의 최상위 개체는 사전이며, 이 사전의 각 키는 초기 계획 명명된. 기준은 레지스트리의 모든 포트와 해당 기준 버전에 대한 매핑을 포함해야 합니다.
이름 | 형 | 묘사 |
---|---|---|
명명된 기준선 | BaselineObject | 추가 기준. 필드 이름은 기준선 이름에 해당합니다. |
BaselineObject
기준 개체는 레지스트리의 포트 이름에 해당하는 각 키와 해당 값이 최신 버전의 포트인 사전입니다.
이름 | 형 | 묘사 |
---|---|---|
포트 이름 | BaselineVersionObject | 포트 이름을 최신 버전으로 매핑 |
BaselineVersionObject
이름 | 형 | 묘사 |
---|---|---|
baseline |
문자열 | 레지스트리에서 사용 가능한 최신 버전의 포트에 해당하는 문자열입니다. |
port-version |
정수 | 레지스트리의 최신 포트 버전에 해당하는 정수입니다. |
파일 시스템 레지스트리의 기준 파일 레이아웃은 Git 레지스트리의 경우와 동일합니다. 유일한 차이점은 파일 시스템에 default
기준이 필요하지 않는다는 것입니다.
Git 레지스트리의 baseline.json
파일 예제
{
"2024-12-01": {
"foo": {
"baseline": "1.0.0",
"port-version": 1
}
}
}
Git 레지스트리의 버전 파일 레이아웃
versions
디렉터리에는 파일 시스템 위치에서 해당 버전을 검색하는 방법과 함께 레지스트리에 포함된 패키지 버전에 대한 모든 정보가 포함됩니다.
최상위 필드
이름 | 형 | 묘사 |
---|---|---|
versions |
VersionObject[] | 버전 개체의 배열입니다. 레지스트리의 각 포트 버전에 대한 항목을 포함합니다. |
versionObject
이름 | 형 | 묘사 |
---|---|---|
path |
문자열 | 해당 버전의 포트 파일이 있는 파일 시스템 위치 |
version version-semver version-date version-string |
문자열 | 업스트림 버전 정보 |
포트 버전 | 정수 | 포트 파일 수정 |
레지스트리의 path
지정할 때 $
문자를 사용하여 레지스트리의 루트를 참조할 수 있습니다. 그렇지 않으면 절대 경로를 대신 사용할 수 있습니다.
파일 시스템 레지스트리 버전 파일의 예
{
"versions": [
{
"path": "$/ports/foo/1.2.0",
"version": "1.2.0",
"port-version": 0
},
{
"path": "$/ports/foo/1.1.0",
"version": "1.1.0",
"port-version": 0
},
{
"path": "$/ports/foo/1.0.0",
"version": "1.0.0",
"port-version": 0
}
]
}
다음 단계
다음에 시도할 몇 가지 작업은 다음과 같습니다.
- 레지스트리 개념 설명서 읽기
- 고유한 Git 기반 레지스트리 만들기
- 사용자 지정 레지스트리 패키지를 설치합니다.
vcpkg