Kayıt defterleri oluşturma
Kayıt defterlerini kullanma hakkında bilgi için bkz . Kayıt defterlerini kullanma.
Kayıt defterleri, bağlantı noktalarının ve sürümlerinin koleksiyonlarıdır. Kendi kayıt defterlerinizi oluşturmak istiyorsanız, kayıt defterleri için iki önemli uygulama seçeneği vardır: git kayıt defterleri ve dosya sistemi kayıt defterleri.
Git kayıt defterleri basit git depolarıdır ve git depoları için normal mekanizmalar aracılığıyla herkese açık veya özel olarak paylaşılabilir. Örneğin vcpkg deposu bir git kayıt defteridir.
Dosya sistemi kayıt defterleri daha çok bir test alanı olarak tasarlanmıştır. Dosya sisteminizde gerçek anlamda yaşadıkları göz önünde bulundurulduğunda, bunları paylaşmanın tek yolu paylaşılan dizinler aracılığıyla yapılır. Ancak dosya sistemi kayıt defterleri, kayıt defterini diske almak için bir yol olduğu varsayılarak git dışı sürüm denetim sistemlerinde tutulan kayıt defterlerini temsil etmenin bir yolu olarak yararlı olabilir.
Kayıt defteri türleri kümesinin zaman içinde büyümesini bekliyoruz; Sık kullandığınız genel sürüm denetim sisteminizde oluşturulan kayıt defterleri için destek istiyorsanız, çekme isteği açmaktan çekinmeyin.
Bir kayıt defterinin temel yapısı şöyledir:
- Geçmişte belirli zamanlarda "en son" olarak kabul edilen ve "temel" olarak bilinen sürüm kümesi.
- Tüm bağlantı noktalarının tüm sürümlerinin kümesi ve bunların kayıt defterinde nerede bulunacağı.
Bu belgeleri takip ettiğiniz için, başvuruda bulunabileceğiniz bir çalışma örneğinin olması yararlı olabilir. Bir tane yazdık ve buraya koyduk:
Microsoft/vcpkg-docs: vcpkg kayıt defteri.
Tüm git kayıt defterlerinin bir versions/baseline.json
dosyası olmalıdır. Bu dosya belirli bir işlemedeki "en son sürümler" kümesini içerir. Yalnızca "default"
alanı içeren üst düzey bir nesne olarak düzenlenir. Bu alan, şu anda en son olan sürüme bir nesne eşleme bağlantı noktası adı içermelidir.
Geçerli bir baseline.json örneği aşağıda verilmişti:
{
"default": {
"kitten": {
"baseline": "2.6.2",
"port-version": 0
},
"port-b": {
"baseline": "19.00",
"port-version": 2
}
}
}
Dizin, versions
kayıt defterinde hangi paketlerin hangi sürümlerinin bulunduğu ve bu sürümlerin nerede depolandığı hakkındaki tüm bilgileri içerir. Kayıt defterinin geri kalanı, vcpkg söz konusu olduğunda yalnızca bir yedekleme deposu işlevi görür: yalnızca dizinin içindeki versions
şeyler, kayıt defterinizin vcpkg tarafından nasıl görüldüğünü yönlendirmek için kullanılır.
Kayıt defterindeki her bağlantı noktası sürüm dizininde olarak <first letter of port>-/<name of port>.json
bulunmalıdır; başka bir deyişle, bağlantı noktasıyla ilgili kitten
bilgiler içinde versions/k-/kitten.json
yer alır. Bu, yalnızca tek bir alanı olan üst düzey bir nesne olmalıdır: "versions"
. Bu alan bir sürüm nesneleri dizisi içermelidir:
- Söz konusu bağlantı noktasının sürümü; sürüm alanları ve
"port-version"
dahil olmak üzere dosyayla tam olarakvcpkg.json
aynı olmalıdır. "git-tree"
Bir git ağacı olan alan; başka bir deyişle, yazdığınızdagit rev-parse COMMIT-ID:path/to/port
elde edilenler.
Kullanım dışı dosyalara sahip bağlantı noktalarının CONTROL
sürüm alanı şeklindedir "version-string"
.
Uyarı
Kayıt defterlerinin önemli bir parçası, sürümlerin hiçbir zaman değiştirilmemesi gerektiğidir. Sonraki bir başvuruya güncelleştirme, mevcut bir sürümü asla kaldırmamalı veya değiştirmemelidir. Kayıt defterini güncelleştirmek her zaman güvenli olmalıdır.
Aşağıda, bir sürüme sahip bir bağlantı noktası için geçerli bir kitten
sürüm veritabanı örneği verilmişti:
{
"versions": [
{
"version": "2.6.2",
"port-version": 0,
"git-tree": "67d60699c271b7716279fdea5a5c6543929eb90e"
}
]
}
Genel olarak, bağlantı noktası dizinlerini yerleştirdiğiniz yer önemli değildir. Ancak, vcpkg'deki deyim, yerleşik vcpkg kayıt defterinin ne yaptığını izlemektir: bağlantı noktanız kitten
içine ports/kitten
yerleştirilmelidir.
Uyarı
Unutmayın, bir kayıt defterini güncelleştirdiğinizde önceki tüm sürümlerin de erişilebilir olması gerekir. Kullanıcınız temelini bir işleme kimliğine ayarlayacağı için bu işleme kimliğinin her zaman mevcut olması ve head işlemenizden erişilebilir olması gerekir. Bu, aslında getirilen işlemdir. Bu, HEAD işlemenizin önceki tüm HEAD işlemelerinin alt öğesi olması gerektiği anlamına gelir.
Yerleşik kayıt defterleri özel Git kayıt defterleri olarak değerlendirilir. Yerleşik kayıt defterleri, uzak url'den getirmek yerine vcpkg klonunun dizinine başvurun $VCPKG_ROOT/.git
. Sürüm oluşturma bilgileri için kaynak olarak şu anda kullanıma alınmış $VCPKG_ROOT/versions
olan dizini kullanırlar.
Bağlantı noktasının yeni bir sürümünü oluştururken bazı git hileleri söz konusudur. yapılacak ilk şey bazı değişiklikler yapmak, ve normal sürüm alanını gerektiği gibi güncelleştirmek "port-version"
ve ardından ile test etmektir overlay-ports
:
vcpkg install kitten --overlay-ports=ports/kitten
.
Testinizi tamamladıktan sonra dizinin git'in purview'ı altında olduğundan emin olmanız gerekir. Bunu geçici bir işleme oluşturarak yapacaksınız:
> git add ports/kitten
> git commit -m 'temporary commit'
Ardından dizinin git ağacı kimliğini alın:
> git rev-parse HEAD:ports/kitten
73ad3c823ef701c37421b450a34271d6beaf7b07
Ardından, bu sürümü sürüm veritabanına ekleyebilirsiniz. öğesinin versions/k-/kitten.json
en üstüne öğesini ekleyebilirsiniz (sürümü 2.6.3#0
eklediğiniz varsayılarak):
{
"versions": [
{
"version": "2.6.3",
"port-version": 0,
"git-tree": "73ad3c823ef701c37421b450a34271d6beaf7b07"
},
{
"version": "2.6.2",
"port-version": 0,
"git-tree": "67d60699c271b7716279fdea5a5c6543929eb90e"
}
]
}
Ardından, yeni sürümünüzle de değiştirmek versions/baseline.json
isteyeceksiniz:
{
"default": {
"kitten": {
"baseline": "2.6.3",
"port-version": 0
},
"port-b": {
"baseline": "19.00",
"port-version": 2
}
}
}
ve geçerli işlemenizi düzeltin:
> git commit --amend
o zaman paylaşın!
Bu belgeleri takip ettiğiniz için, başvuruda bulunabileceğiniz bir çalışma örneğinin olması yararlı olabilir. Bir tane yazdık ve buraya koyduk:
Örnek dosya sistemi kayıt defteri.
Tüm dosya sistemi kayıt defterlerinin bir versions/baseline.json
dosyası olmalıdır. Bu dosya, kayıt defterinin belirli bir sürümü için "en son sürümler" kümesini içerir. Bağlantı noktası adlarını kayıt defterinin bu sürümü için "en son" olarak kabul edilen sürüme eşleyen sürüm adından "temel nesnelere" bir eşleme içeren üst düzey bir nesne olarak düzenlenir.
Dosya sistemi kayıt defterlerinin sürüm oluşturma düzenine karar vermeleri gerekir. Refs'nin örtük sürüm oluşturma şemasına sahip git kayıt defterlerinden farklı olarak, dosya sistemi kayıt defterleri buradaki sürüm denetim sistemine dayanamaz. Olası seçeneklerden biri, günlük bir sürüm yapmak ve "sürümlerinizin" tarih olmasını sağlamaktır.
Uyarı
Bir taban çizgisi yayımlandıktan sonra değiştirilmemelidir. Sürümleri değiştirmek veya güncelleştirmek istiyorsanız, dosyada baseline.json
yeni bir temel oluşturmanız gerekir.
Aşağıda, sürümleri için tarihlere karar veren bir kayıt defteri için geçerli baseline.json
bir örneği verilmiştir:
{
"2021-04-16": {
"kitten": {
"baseline": "2.6.2",
"port-version": 0
},
"port-b": {
"baseline": "19.00",
"port-version": 2
}
},
"2021-04-15": {
"kitten": {
"baseline": "2.6.2",
"port-version": 0
},
"port-b": {
"baseline": "19.00",
"port-version": 1
}
}
}
Dizin, versions
kayıt defterinde hangi paketlerin hangi sürümlerinin bulunduğu ve bu sürümlerin nerede depolandığı hakkındaki tüm bilgileri içerir. Kayıt defterinin geri kalanı, vcpkg söz konusu olduğunda yalnızca bir yedekleme deposu işlevi görür: yalnızca dizinin içindeki versions
şeyler, kayıt defterinizin vcpkg tarafından nasıl görüldüğünü yönlendirmek için kullanılır.
Kayıt defterindeki her bağlantı noktası sürüm dizininde olarak <first letter of port>-/<name of port>.json
bulunmalıdır; başka bir deyişle, bağlantı noktasıyla ilgili kitten
bilgiler içinde versions/k-/kitten.json
yer alır. Bu, yalnızca tek bir alanı olan üst düzey bir nesne olmalıdır: "versions"
. Bu alan bir sürüm nesneleri dizisi içermelidir:
- Söz konusu bağlantı noktasının sürümü; sürüm alanları ve
"port-version"
dahil olmak üzere dosyayla tam olarakvcpkg.json
aynı olmalıdır. - Alan
"path"
: kayıt defterinin tabanında (başka bir deyişle, bulunduğuversions
dizin) bağlantı noktası dizinine köklenen göreli dizin. Şuna benzer görünmelidir"$/path/to/port/dir
: "
Kullanım dışı dosyalara sahip bağlantı noktalarının CONTROL
sürüm alanı şeklindedir "version-string"
.
Genel olarak, bağlantı noktası dizinlerini yerleştirdiğiniz yer önemli değildir. Ancak, vcpkg'deki deyim, yerleşik vcpkg kayıt defterinin ne yaptığını biraz yakından takip etmektir: sürümündeki bağlantı noktanızkitten
, bağlantı noktası sürümleri uygun gördüğünüz şekilde eklenmiş olarak içine yerleştirilmelidir ports/kitten/x.y.z
(dosya adları için kullanmak iyi bir karakter olmasa da#
, belki de kullanın _
).x.y.z
Uyarı
Kayıt defterlerinin önemli bir parçası, sürümlerin hiçbir zaman değiştirilmemesi gerektiğidir. Mevcut bir sürümü asla kaldırmamalı veya değiştirmemelidir. Kayıt defterinizdeki değişiklikler, aşağı akış kullanıcılarına davranışı değiştirmemelidir.
Aşağıda, bir sürüme sahip bir bağlantı noktası için geçerli bir kitten
sürüm veritabanı örneği verilmişti:
{
"versions": [
{
"version": "2.6.2",
"port-version": 0,
"path": "$/ports/kitten/2.6.2_0"
}
]
}
Git kayıt defterlerinden farklı olarak, dosya sistemi kayıt defterine yeni bir sürüm eklemek çoğunlukla çok fazla kopyalama gerektirir. İlk yapmanız gereken, bağlantı noktanızın en son sürümünü yeni bir sürüm dizinine kopyalamak, sürümü ve "port-version"
alanları gerektiği gibi güncelleştirmek ve ardından ile test etmektir overlay-ports
:
vcpkg install kitten --overlay-ports=ports/kitten/new-version
.
Testinizi tamamladıktan sonra, bu yeni sürümü öğesinin versions/k-/kitten.json
en üstüne ekleyebilirsiniz:
{
"versions": [
{
"version": "2.6.3",
"port-version": 0,
"path": "$/ports/kitten/2.6.3_0"
},
{
"version": "2.6.2",
"port-version": 0,
"path": "$/ports/kitten/2.6.2_0"
}
]
}
Ardından, yeni sürümünüzü versions/baseline.json
de değiştirmek isteyeceksiniz (mevcut temelleri değiştirmemeye dikkat edin):
{
"2021-04-17": {
"kitten": {
"baseline": "2.6.3",
"port-version": 0
},
"port-b": {
"baseline": "19.00",
"port-version": 2
}
},
"2021-04-16": {
"kitten": {
"baseline": "2.6.2",
"port-version": 0
},
"port-b": {
"baseline": "19.00",
"port-version": 2
}
},
"2021-04-15": {
"kitten": {
"baseline": "2.6.2",
"port-version": 0
},
"port-b": {
"baseline": "19.00",
"port-version": 1
}
}
}
Ve işiniz bitti!
vcpkg geri bildirimi
vcpkg, açık kaynak bir projedir. Geri bildirim sağlamak için bir bağlantı seçin: