Aracılığıyla paylaş


Kayıt defterleri oluşturma

Kayıt defterlerini kullanma hakkında bilgi için bkz . Kayıt defterlerini kullanma.

Genel Bakış

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ğı.

Git kayıt defterleri

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:

Northwind Traders: 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.

Aşağıda geçerli bir baseline.json örneği verilmiştir:

{
  "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>.jsonbulunmalıdır; başka bir deyişle, bağlantı noktasıyla ilgili kitten bilgiler içinde versions/k-/kitten.jsonyer 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 olarak vcpkg.json aynı olmalıdır.
  • "git-tree" Bir git ağacı olan alan; başka bir deyişle, yazdığınızda git rev-parse COMMIT-ID:path/to/portelde edilenler.

Ancak, dosyaları olan CONTROL bağlantı noktalarının sürüm alanı; "version-string"yeni kayıt defterlerinde dosya kullanılmasını CONTROL önermeyiz.

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/kittenyerleş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

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.

Yeni sürüm ekleme

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.jsonen üstüne öğesini ekleyebilirsiniz (sürümü 2.6.3#0eklediğ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!

Dosya sistemi kayıt defterleri

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.jsonbir ö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>.jsonbulunmalıdır; başka bir deyişle, bağlantı noktasıyla ilgili kitten bilgiler içinde versions/k-/kitten.jsonyer 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 olarak vcpkg.json aynı olmalıdır.
  • Alan "path" : kayıt defterinin tabanında (başka bir deyişle, bulunduğu versions dizin) bağlantı noktası dizinine köklenen göreli dizin. Şuna benzer görünmelidir "$/path/to/port/dir: "

Ancak, dosyaları olan CONTROL bağlantı noktalarının sürüm alanı; "version-string"yeni kayıt defterlerinde dosya kullanılmasını CONTROL önermeyiz.

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"
    }
  ]
}

Yeni bir sürüm ekleme

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.jsonen ü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!