Справочник по реестрам
Обзор
В этой статье описываются сведения о реализации для каждого типа реестра. В частности, этот файл касается рекомендуемого макета для каждого типа реестра и ожидаемого содержимого соответствующей базы данных версий базы данных.
Заметка
В этой статье содержатся сведения о реализации пользовательских реестров. Сведения об использовании пользовательских реестров в проекте см. в статье Использование реестров.
Реестры Git
Базовый макет файла в реестрах Git
Поля верхнего уровня
Объект верхнего уровня в файле baseine.json
является словарем, каждый ключ в этом словаре — это именованных базовых. Из-за сведений о реализации реестров Git необходимо, чтобы именованные базовые с именем default существовали, и что он содержит сопоставление всех портов в реестре с их базовой версией.
Имя | Тип | Описание |
---|---|---|
default |
Базовый объектObject | Базовый план по умолчанию, необходимый для реестров Git. |
Именованные базовые показатели | Базовый объектObject | Дополнительные базовые показатели. Имя поля соответствует базовому имени. |
Базовый объектObject
Базовый объект — это словарь, каждый раздел, соответствующий имени порта в реестре, и его значение является последней версией порта.
Имя | Тип | Описание |
---|---|---|
Имя порта | BaselineVersionObject | Сопоставление имени порта с последней версией |
BaselineVersionObject
Имя | Тип | Описание |
---|---|---|
baseline |
струна | Строка, соответствующая последней доступной версии порта в реестре. |
port-version |
целое число | Целое число, соответствующее последней версии порта в реестре. |
Пример файла baseline.json
в реестре Git
В реестре с одним портом с именем foo
версии 1.0.0#1
содержимое файла baseline.json
должно быть:
{
"default": {
"foo": {
"baseline": "1.0.0",
"port-version": 1
}
}
}
Макет файла версии в реестрах Git
Каталог versions
содержит все сведения о том, какие версии пакетов содержатся в реестре, а также метод для получения этих версий из журнала репозитория.
Поля верхнего уровня
Имя | Тип | Описание |
---|---|---|
versions |
VersionObject[] | Массив объектов версии. Содержит запись для каждой версии порта в журнале реестра. |
VersionObject
Имя | Тип | Описание |
---|---|---|
git-tree |
струна | Дерево git, используемое для извлечения содержимого порта |
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
Команда возвращает SHA каталога, содержащего порт curl
в текущей редакции (HEAD
).
Содержимое git-tree
можно отобразить с помощью команды 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
Или содержимое определенного файла с 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
, которая автоматизирует процесс до тех пор, пока репозиторий следует рекомендуемой структуре реестра . Ознакомьтесь с руководством по . Публикация пакетов в частном реестре vcpkg с помощью Git статьи о публикации порта в реестре Git.
Реестры файловой системы
Базовый макет файла в реестрах файловой системы
Поля верхнего уровня
Объект верхнего уровня в файле baseine.json
является словарем, каждый ключ в этом словаре — это именованных базовых. Базовые показатели должны содержать сопоставления всех портов в реестре с базовой версией.
Имя | Тип | Описание |
---|---|---|
Именованные базовые показатели | Базовый объектObject | Дополнительные базовые показатели. Имя поля соответствует базовому имени. |
Базовый объектObject
Базовый объект — это словарь, каждый раздел, соответствующий имени порта в реестре, и его значение является последней версией порта.
Имя | Тип | Описание |
---|---|---|
Имя порта | BaselineVersionObject | Сопоставление имени порта с последней версией |
BaselineVersionObject
Имя | Тип | Описание |
---|---|---|
baseline |
струна | Строка, соответствующая последней доступной версии порта в реестре. |
port-version |
целое число | Целое число, соответствующее последней версии порта в реестре. |
Макет базового файла в реестре файловой системы совпадает с реестрами Git. Единственное различие заключается в том, что файловая система не требует default
базовых показателей.
Пример файла baseline.json
в реестре Git
{
"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
}
]
}
Дальнейшие действия
Ниже приведены некоторые задачи, которые необходимо выполнить следующим образом: