Referenční informace k registrům
Přehled
Tento článek popisuje podrobnosti implementace jednotlivých typů registru. Konkrétně se tento soubor týká doporučeného rozložení pro každý druh registru a očekávaný obsah příslušných verzí databáze.
Poznámka
Tento článek obsahuje informace o tom, jak implementovat vlastní registry. Informace o využívání vlastních registrů v projektu najdete v článku Použití registrů.
Registry Gitu
Rozložení základního souboru v registrech Gitu
Pole nejvyšší úrovně
Objekt nejvyšší úrovně v souboru baseine.json
je slovník, každý klíč v tomto slovníku je pojmenovaný základní. Vzhledem k podrobnostem implementace registrů Git je nutné, aby pojmenované základní s názvem "výchozí" existuje a že obsahuje mapování všech portů v registru na jejich základní verzi.
Jméno | Typ | Popis |
---|---|---|
default |
BaselineObject | Výchozí směrný plán vyžadovaný pro registry Git. |
Pojmenovaný směrný plán | BaselineObject | Další směrné plány. Název pole odpovídá názvu směrného plánu. |
BaselineObject
Směrný objekt je slovník, přičemž každý klíč odpovídá názvu portu v registru a jeho hodnota je nejnovější verzí portu.
Jméno | Typ | Popis |
---|---|---|
Název portu | BaselineVersionObject | Mapování názvu portu na nejnovější verzi |
BaselineVersionObject
Jméno | Typ | Popis |
---|---|---|
baseline |
řetězec | Řetězec odpovídající nejnovější dostupné verzi portu v registru. |
port-version |
celé číslo | Celé číslo odpovídající nejnovější verzi portu v registru |
Příklad souboru baseline.json
v registru Git
V registru obsahujícím jeden port s názvem foo
ve verzi 1.0.0#1
by měl být obsah souboru baseline.json
:
{
"default": {
"foo": {
"baseline": "1.0.0",
"port-version": 1
}
}
}
Rozložení souboru verze v registrech Gitu
Adresář versions
obsahuje všechny informace o tom, které verze balíčků jsou obsaženy v registru, spolu s metodou načtení těchto verzí z historie úložiště.
Pole nejvyšší úrovně
Jméno | Typ | Popis |
---|---|---|
versions |
VersionObject[] | Pole objektů verzí. Obsahuje položku pro každou verzi portu v historii registru. |
VersionObject
Jméno | Typ | Popis |
---|---|---|
git-tree |
řetězec | Sha stromu Git, který se používá k načtení obsahu portu |
version version-semver version-date version-string |
řetězec | Informace o nadřazené verzi |
verze portu | celé číslo | Revize souborů portů |
Příklad souboru s verzemi registru 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
}
]
}
Získání git-tree
SHA
Vcpkg používá funkce Gitu k načtení konkrétních verzí portu obsaženého v historii potvrzení. Použitá metoda je načíst objekt git-tree
z úložiště, jak je uvedeno v souboru verzí portu.
Každý adresář portů v registru Git má přiřazený jedinečný sha (označovaný jako git-tree
v souborech verzí). Sha se vypočítá pomocí obsahu adresáře; při každém potvrzení změny do úložiště, které upraví adresář, se jeho SHA přepočítá.
Git umožňuje načíst obsah daného adresáře v libovolném okamžiku v jeho historii za předpokladu, že znáte jejich konkrétní sha. Díky použití této funkce může vcpkg indexovat konkrétní verze portů s jejich příslušnými SHA (git-tree
).
Pokud chcete získat sha adresáře portů v jakékoli dané revizi, můžete použít následující příkaz Gitu:
git -C <path/to/ports> ls-tree --format='%(objectname)' <commit sha> -- <portname>
Příklad:
git -C %VCPKG_ROOT%/ports ls-tree --format='%(objectname)' HEAD -- curl
6ef1763f3cbe570d6378632c9b5793479c37fb07
Příkaz vrátí sha adresáře obsahujícího port curl
v aktuální revizi (HEAD
).
Obsah git-tree
je možné zobrazit pomocí příkazu 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
Nebo obsah určitého souboru s 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)
Správa souborů databáze v aktuálním stavu pomocí těchto příkazů Gitu v ručním procesu může být obtížná úloha. Z tohoto důvodu doporučujeme použít příkaz x-add-version
, který automatizuje proces, pokud úložiště dodržuje doporučenou strukturu registru . Podívejte se na kurz : Publikování balíčků do privátního registru vcpkg pomocí článku Gitu, kde najdete příklad publikování portu v registru Git.
Registry systému souborů
Rozložení souborů podle směrného plánu v registrech systému souborů
Pole nejvyšší úrovně
Objekt nejvyšší úrovně v souboru baseine.json
je slovník, každý klíč v tomto slovníku je pojmenovaný základní. Směrné plány by měly obsahovat mapování všech portů v registru na jejich základní verzi.
Jméno | Typ | Popis |
---|---|---|
Pojmenovaný směrný plán | BaselineObject | Další směrné plány. Název pole odpovídá názvu směrného plánu. |
BaselineObject
Směrný objekt je slovník, přičemž každý klíč odpovídá názvu portu v registru a jeho hodnota je nejnovější verzí portu.
Jméno | Typ | Popis |
---|---|---|
Název portu | BaselineVersionObject | Mapování názvu portu na nejnovější verzi |
BaselineVersionObject
Jméno | Typ | Popis |
---|---|---|
baseline |
řetězec | Řetězec odpovídající nejnovější dostupné verzi portu v registru. |
port-version |
celé číslo | Celé číslo odpovídající nejnovější verzi portu v registru |
Rozložení základního souboru v registru systému souborů je stejné jako u registrů Git. Jediným rozdílem je, že systém souborů nevyžaduje default
směrný plán.
Příklad souboru baseline.json
v registru Git
{
"2024-12-01": {
"foo": {
"baseline": "1.0.0",
"port-version": 1
}
}
}
Rozložení souboru verze v registrech Gitu
Adresář versions
obsahuje všechny informace o tom, které verze balíčků jsou obsaženy v registru, spolu s metodou načtení těchto verzí z umístění systému souborů.
polí nejvyšší úrovně
Jméno | Typ | Popis |
---|---|---|
versions |
VersionObject[] | Pole objektů verzí. Obsahuje položku pro každou verzi portu v registru. |
VersionObject
Jméno | Typ | Popis |
---|---|---|
path |
řetězec | Umístění systému souborů, kde jsou umístěné soubory portů pro odpovídající verzi |
version version-semver version-date version-string |
řetězec | Informace o nadřazené verzi |
verze portu | celé číslo | Revize souborů portů |
Při zadávání path
registru lze $
znak použít k odkazování na kořen registru. V opačném případě je možné místo toho použít absolutní cesty.
Příklad souboru verze registru systému souborů
{
"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
}
]
}
Další kroky
Tady je několik úkolů, které můžete vyzkoušet dál: