Aracılığıyla paylaş


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#1sü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: