SORU
14 Ocak 2011, Cuma


Git aslında olduğunu söylediği zaman "çözme deltalar " ne yapıyor;?

Bir depo ilk klon sırasında, git ilk nesneleri apaçık ortada olan) alır, ve o zaman aynı miktarda harcıyor "çözme deltalar". Aslında klon bu aşamasında neler oluyor?

CEVAP
14 Ocak 2011, Cuma


git clone ileri sürülmüştür.

  1. "Pack" repo veritabanındaki tüm nesneleri dosya . alma
  2. Bir dizin alınan paketi için dosya oluşturmak
  3. Baş revizyon (non-çıplak bir repo için, tabii ki) göz atın

"Çözme deltalar" mesajı ikinci aşama için gösterilen paketini dizin ("git dizini-pack"). dosya

Dosyaları Packdeğilonları gerçek nesne Kimlikleri, yalnızca nesne içeriğe sahip. Yani nesne Kimliklerini belirlemek için, git paketi her cismin sıkıştırması bir SHA1 yapmak için ındex dosyasına yazılı olan nesne KİMLİĞİ, üretmek için vardır.

Pack dosyadaki bir nesneyi başka bir nesne küçük değişiklikler bir dizi yani bir delta kadar saklanabilir. Bu durumda, git temel nesne almak, komutları uygulamak ve sonuç SHA1 gerekiyor. Taban delta komutları bir dizi uygulayarak elde edilecek kendisi olabilir nesnesi. (Bir klonu durumunda, temel nesne zaten rastlanmamış olsa, kaç imal nesneleri önbelleğe alınan bir sınırı vardır).

Özetle, "" sahne açılıyor içerir ve şaşırtıcı olmayan bir şekilde oldukça uzun bir zaman alır tüm repo veritabanı, sağlama. deltalar çözme Muhtemelen açılıyor ve hesaplama SHA1s aslında delta komutları uygulamak daha fazla zaman alır.

Bir sonraki getirmesi durumunda, alınan paketi dosyası alma gıt zaten olması beklenen diğer nesnelere başvurular (delta nesne üsleri gibi) içerebilir. Bu durumda, alıcı gıt aslında bu yüzden bu tür başvurulan nesne dahil etmek için alınan pack dosyasını yeniden yazarsaklıpack dosyası tek başına yeterli değildir. Bu mesaj "" kökenli. deltalar çözme nerede olabilir

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:
Git

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Angry Paintballer

    Angry Paintb

    8 Ocak 2012
  • Edgar flores

    Edgar flores

    7 HAZİRAN 2006
  • Matt Davis

    Matt Davis

    4 ŞUBAT 2006