Referensi registri
Ikhtisar
Artikel ini menjelaskan detail implementasi untuk setiap jenis registri. Secara khusus, file ini berkaitan dengan tata letak yang direkomendasikan untuk setiap jenis registri dan konten yang diharapkan dari database versi masing-masing.
Nota
Artikel ini berisi informasi tentang cara menerapkan registri kustom. Untuk informasi tentang menggunakan registri kustom di proyek Anda, lihat artikel Menggunakan registri.
Registri Git
Tata letak file garis besar di registri Git
Bidang tingkat atas
Objek tingkat atas dalam file baseine.json
adalah kamus, setiap kunci dalam kamus ini adalah bernama garis besar. Karena detail implementasi registri Git, diperlukan bernama garis besar dengan nama "default" ada dan berisi pemetaan semua port dalam registri ke versi dasarnya.
Nama | Jenis | Deskripsi |
---|---|---|
default |
BaselineObject | Garis besar default, diperlukan untuk registri Git. |
Garis besar bernama | BaselineObject | Garis besar tambahan. Nama bidang sesuai dengan nama garis besar. |
BaselineObject
Objek garis besar adalah kamus, dengan setiap kunci yang sesuai dengan nama port di registri dan nilainya menjadi versi terbaru port.
Nama | Jenis | Deskripsi |
---|---|---|
Nama port | BaselineVersionObject | Pemetaan nama port ke versi terbarunya |
BaselineVersionObject
Nama | Jenis | Deskripsi |
---|---|---|
baseline |
tali | String yang sesuai dengan versi port terbaru yang tersedia di registri. |
port-version |
Integer | Bilangan bulat yang sesuai dengan versi port terbaru port di registri |
Contoh file baseline.json
di registri Git
Dalam registri yang berisi satu port bernama foo
pada versi 1.0.0#1
, konten file baseline.json
harus:
{
"default": {
"foo": {
"baseline": "1.0.0",
"port-version": 1
}
}
}
Tata letak file versi di registri Git
Direktori versions
berisi semua informasi tentang versi paket mana yang terkandung dalam registri, bersama dengan metode untuk mengambil versi tersebut dari riwayat repositori.
Bidang tingkat atas
Nama | Jenis | Deskripsi |
---|---|---|
versions |
VersionObject[] | Array objek versi. Berisi entri untuk setiap versi port dalam riwayat registri. |
VersionObject
Nama | Jenis | Deskripsi |
---|---|---|
git-tree |
tali | SHA pohon git yang digunakan untuk mengambil konten port |
version version-semver version-date version-string |
tali | Informasi versi upstram |
versi port | Integer | Revisi file port |
Contoh file versi registri 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
}
]
}
Mendapatkan SHA git-tree
vcpkg menggunakan kemampuan Git untuk mengambil versi port tertentu yang terkandung dalam riwayat penerapannya. Metode yang digunakan adalah mengambil objek git-tree
dari repositori seperti yang ditentukan dalam file versi port.
Setiap direktori port dalam registri Git memiliki SHA unik yang terkait dengannya (disebut sebagai git-tree
dalam file versi). SHA dihitung menggunakan konten direktori; setiap kali perubahan diterapkan ke repositori yang memodifikasi direktori, SHA-nya dihitung ulang.
Git memungkinkan Anda untuk mengambil konten direktori tertentu kapan saja dalam riwayatnya, asalkan Anda mengetahui SHA spesifik mereka. Dengan memanfaatkan fitur ini, vcpkg dapat mengindeks versi port tertentu dengan SHA (git-tree
) masing-masing.
Untuk mendapatkan SHA direktori port pada revisi tertentu, perintah Git berikut dapat digunakan:
git -C <path/to/ports> ls-tree --format='%(objectname)' <commit sha> -- <portname>
Contoh:
git -C %VCPKG_ROOT%/ports ls-tree --format='%(objectname)' HEAD -- curl
6ef1763f3cbe570d6378632c9b5793479c37fb07
Perintah mengembalikan SHA direktori yang berisi port curl
pada revisi saat ini (HEAD
).
Dimungkinkan untuk menampilkan konten git-tree
menggunakan perintah git show <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
Atau konten file tertentu dengan 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)
Mengelola file database terbaru menggunakan perintah Git ini dalam proses manual bisa menjadi tugas yang sulit. Untuk alasan itu, sebaiknya gunakan perintah x-add-version
, yang mengotomatiskan proses selama repositori mengikuti struktur registri yang direkomendasikan. Lihat artikel Tutorial: Menerbitkan paket ke registri vcpkg privat menggunakan Git untuk contoh cara menerbitkan port di registri Git.
Registri sistem file
Tata letak file garis besar dalam registri sistem file
Bidang tingkat atas
Objek tingkat atas dalam file baseine.json
adalah kamus, setiap kunci dalam kamus ini adalah bernama garis besar. Garis besar harus berisi pemetaan semua port dalam registri ke versi dasarnya.
Nama | Jenis | Deskripsi |
---|---|---|
Garis besar bernama | BaselineObject | Garis besar tambahan. Nama bidang sesuai dengan nama garis besar. |
BaselineObject
Objek garis besar adalah kamus, dengan setiap kunci yang sesuai dengan nama port di registri dan nilainya menjadi versi terbaru port.
Nama | Jenis | Deskripsi |
---|---|---|
Nama port | BaselineVersionObject | Pemetaan nama port ke versi terbarunya |
BaselineVersionObject
Nama | Jenis | Deskripsi |
---|---|---|
baseline |
tali | String yang sesuai dengan versi port terbaru yang tersedia di registri. |
port-version |
Integer | Bilangan bulat yang sesuai dengan versi port terbaru port di registri |
Tata letak file garis besar dalam registri sistem file sama dengan untuk registri Git . Satu-satunya perbedaan adalah bahwa sistem file tidak memerlukan garis besar default
.
Contoh file baseline.json
di registri Git
{
"2024-12-01": {
"foo": {
"baseline": "1.0.0",
"port-version": 1
}
}
}
Tata letak file versi di registri Git
Direktori versions
berisi semua informasi tentang versi paket mana yang terkandung dalam registri, bersama dengan metode untuk mengambil versi tersebut dari lokasi sistem file.
bidang tingkat atas
Nama | Jenis | Deskripsi |
---|---|---|
versions |
VersionObject[] | Array objek versi. Berisi entri untuk setiap versi port dalam registri. |
versionObject
Nama | Jenis | Deskripsi |
---|---|---|
path |
tali | Lokasi sistem file tempat file port untuk versi yang sesuai berada |
version version-semver version-date version-string |
tali | Informasi versi upstram |
versi port | Integer | Revisi file port |
Saat menentukan path
registri, karakter $
dapat digunakan untuk mereferensikan akar registri. Jika tidak, jalur absolut dapat digunakan sebagai gantinya.
Contoh file versi registri sistem file
{
"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
}
]
}
Langkah berikutnya
Berikut adalah beberapa tugas untuk dicoba berikutnya: