Kayıt defterleri başvurusu
Genel bakış
Bu makalede, her kayıt defteri türü için uygulama ayrıntıları açıklanmaktadır. Özellikle, bu dosya her kayıt defteri türü için önerilen düzen ve ilgili sürümleri veritabanıbeklenen içeriğiyle ilgilidir.
Not
Bu makale, özel kayıt defterlerinin nasıl uygulanacağına ilişkin bilgiler içerir. Projenizde özel kayıt defterlerini kullanma hakkında bilgi için kayıt defterlerini kullanma makalesine bakın.
Git kayıt defterleri
Git kayıt defterlerinde temel dosya düzeni
Üst düzey alanlar
baseine.json
dosyasındaki en üst düzey nesne bir sözlüktür ve bu sözlükteki her anahtar temel adlı bir. Git kayıt defterlerinin uygulama ayrıntıları nedeniyle, temel adlı bir "varsayılan" adlı bir mevcut olması ve kayıt defterindeki tüm bağlantı noktalarının taban çizgisi sürümüne eşlemesini içermesi gerekir.
Ad | Tür | Açıklama |
---|---|---|
default |
BaselineObject | Git kayıt defterleri için gerekli olan varsayılan temel. |
Adlandırılmış taban çizgisi | BaselineObject | Ek temeller. Alan adı taban çizgisi adına karşılık gelir. |
BaselineObject
Temel nesne, kayıt defterindeki bir bağlantı noktası adına karşılık gelen her anahtar ve değeri bağlantı noktasının en son sürümü olan bir sözlüktür.
Ad | Tür | Açıklama |
---|---|---|
Bağlantı noktası adı | BaselineVersionObject | Bağlantı noktası adının en son sürümüne eşlemesi |
BaselineVersionObject
Ad | Tür | Açıklama |
---|---|---|
baseline |
dizgi | Kayıt defterindeki bağlantı noktasının kullanılabilir en son sürümüne karşılık gelen bir dize. |
port-version |
tam sayı | Kayıt defterindeki bağlantı noktasının en son bağlantı noktası sürümüne karşılık gelen tamsayı |
Git kayıt defterindeki baseline.json
dosyası örneği
1.0.0#1
sürümünde foo
adlı tek bir bağlantı noktası içeren kayıt defterinde, baseline.json
dosya içeriği şu şekilde olmalıdır:
{
"default": {
"foo": {
"baseline": "1.0.0",
"port-version": 1
}
}
}
Git kayıt defterlerinde sürüm dosyası düzeni
versions
dizini, depo geçmişinden bu sürümleri alma yöntemiyle birlikte kayıt defterinde hangi paketlerin sürümlerinin bulunduğu hakkındaki tüm bilgileri içerir.
Üst düzey alanlar
Ad | Tür | Açıklama |
---|---|---|
versions |
VersionObject[] | Sürüm nesneleri dizisi. Kayıt defteri geçmişindeki bağlantı noktasının her sürümü için bir girdi içerir. |
VersionObject
Ad | Tür | Açıklama |
---|---|---|
git-tree |
dizgi | Bağlantı noktası içeriğini almak için kullanılan git ağacı SHA'sı |
version version-semver version-date version-string |
dizgi | Yukarı akış sürüm bilgileri |
bağlantı noktası sürümü | tam sayı | Bağlantı noktası dosyaları düzeltmesi |
Git kayıt defteri sürümleri dosyası örneği
{
"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 alma
vcpkg, işleme geçmişinde yer alan bir bağlantı noktasının belirli sürümlerini almak için Git'in özelliklerini kullanır. Kullanılan yöntem, bir bağlantı noktasının sürüm dosyasında belirtildiği gibi git-tree
nesnesini depodan almaktır.
Git kayıt defterindeki her bağlantı noktası diziniyle ilişkilendirilmiş benzersiz bir SHA vardır (sürüm dosyalarında git-tree
olarak adlandırılır). SHA, dizinin içeriği kullanılarak hesaplanır; her değişiklik bir dizini değiştiren depoya işlendiğinde, SHA'sı yeniden hesaplanır.
Git, belirli bir dizinin içeriğini, belirli bir SHA'sini bilmeniz şartıyla, geçmişinde herhangi bir noktada almanıza olanak tanır. Vcpkg, bu özelliği kullanarak belirli bağlantı noktası sürümlerini ilgili SHA (git-tree
) ile dizinleyebilir.
Herhangi bir düzeltmede bir bağlantı noktası dizininin SHA'sını almak için aşağıdaki Git komutu kullanılabilir:
git -C <path/to/ports> ls-tree --format='%(objectname)' <commit sha> -- <portname>
Örnek:
git -C %VCPKG_ROOT%/ports ls-tree --format='%(objectname)' HEAD -- curl
6ef1763f3cbe570d6378632c9b5793479c37fb07
Komut, geçerli düzeltmede (HEAD
) curl
bağlantı noktasını içeren dizinin SHA'sını döndürür.
git show <git-tree>
komutunu kullanarak git-tree
içeriğini göstermek mümkündür:
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
Veya git show <git-tree>:<file>
ile belirli bir dosyanın içeriği:
git show 6ef1763f3cbe570d6378632c9b5793479c37fb07:usage
curl is compatible with built-in CMake targets:
find_package(CURL REQUIRED)
target_link_libraries(main PRIVATE CURL::libcurl)
Bu Git komutlarını el ile bir işlemde kullanarak veritabanı dosyalarının güncel olmasını sağlamak zor bir görev olabilir. Bu nedenle, depo önerilenkayıt defteri yapısını izlediği sürece işlemi otomatik hale getiren x-add-version
komutunu kullanmanızı öneririz. Git kayıt defterinde bağlantı noktası yayımlama örneği için Öğreticisi: Git kullanarak paketleri özel bir vcpkg kayıt defterinde yayımlama makalesine bakın.
Dosya sistemi kayıt defterleri
Dosya sistemi kayıt defterlerinde temel dosya düzeni
Üst düzey alanlar
baseine.json
dosyasındaki en üst düzey nesne bir sözlüktür ve bu sözlükteki her anahtar temel adlı bir. Temeller, kayıt defterindeki tüm bağlantı noktalarının taban çizgisi sürümüne eşlemelerini içermelidir.
Ad | Tür | Açıklama |
---|---|---|
Adlandırılmış taban çizgisi | BaselineObject | Ek temeller. Alan adı taban çizgisi adına karşılık gelir. |
BaselineObject
Temel nesne, kayıt defterindeki bir bağlantı noktası adına karşılık gelen her anahtar ve değeri bağlantı noktasının en son sürümü olan bir sözlüktür.
Ad | Tür | Açıklama |
---|---|---|
Bağlantı noktası adı | BaselineVersionObject | Bağlantı noktası adının en son sürümüne eşlemesi |
BaselineVersionObject
Ad | Tür | Açıklama |
---|---|---|
baseline |
dizgi | Kayıt defterindeki bağlantı noktasının kullanılabilir en son sürümüne karşılık gelen bir dize. |
port-version |
tam sayı | Kayıt defterindeki bağlantı noktasının en son bağlantı noktası sürümüne karşılık gelen tamsayı |
Dosya sistemi kayıt defterindeki temel dosyanın düzeni, Git kayıt defterleri ile aynıdır. Tek fark, dosya sistemlerinin default
taban çizgisi gerektirmemasıdır.
Git kayıt defterindeki baseline.json
dosyası örneği
{
"2024-12-01": {
"foo": {
"baseline": "1.0.0",
"port-version": 1
}
}
}
Git kayıt defterlerinde sürüm dosyası düzeni
versions
dizini, bu sürümleri bir dosya sistemi konumundan alma yöntemiyle birlikte kayıt defterinde hangi paket sürümlerinin bulunduğu hakkındaki tüm bilgileri içerir.
Üst düzey alanlar
Ad | Tür | Açıklama |
---|---|---|
versions |
VersionObject[] | Sürüm nesneleri dizisi. Kayıt defterindeki bağlantı noktasının her sürümü için bir girdi içerir. |
VersionObject
Ad | Tür | Açıklama |
---|---|---|
path |
dizgi | İlgili sürüm için bağlantı noktası dosyalarının bulunduğu dosya sistemi konumu |
version version-semver version-date version-string |
dizgi | Yukarı akış sürüm bilgileri |
bağlantı noktası sürümü | tam sayı | Bağlantı noktası dosyaları düzeltmesi |
Kayıt defterinin path
belirtilirken, kayıt defterinin köküne başvurmak için $
karakteri kullanılabilir. Aksi takdirde, bunun yerine mutlak yollar kullanılabilir.
Dosya sistemi kayıt defteri sürüm dosyası örneği
{
"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
}
]
}
Sonraki adımlar
Şimdi deneyebileceğiniz bazı görevler şunlardır:
- Kayıt defterleri kavramsal belgelerini okuyun
- Kendi Git tabanlı kayıt defteri oluşturma
- Özel kayıt defteri paketleri yükleme