SORU
29 EKİM 2011, CUMARTESİ


Nasıl gıt benzer dosyaları algılar, yeniden algılama"?

Wikipedia otomatik yeniden tespiti açıklıyor:

Kısaca, revizyon N, aynı adı taşıyan bir dosya içinde bir dosya verildi revizyon N−1 varsayılan atası. Yok, ancak, gibi-adlı dosya numarası N−1, var olan bir dosya için Gıt arar sadece revizyon N−1çok benzeryeni dosya için.

Yeniden algılama görünüşe göre benzer bir dosya algılama aşağı kaynar. Bu algoritma her yerde belgelenmiştir? Dönüşümler türlerini otomatik olarak algılanır ne olduğunu bilmek güzel olurdu.

CEVAP
29 EKİM 2011, CUMARTESİ


Gıt dosya içeriğini, dosya adları değil parça. Yani içeriği değiştirmeden bir dosya yeniden adlandırma gıt tespit etmek kolaydır. (Gıt izlemez, ama yaparalgılama; git mv git rm git add Etkin aynıdır.)

Bir dosya depoya eklendiğinde, dosya ağacı nesne. Gerçek dosya içeriğini bir ikili büyük nesne olarak eklenirblob) depo içinde. Gıt aynı içeriğe sahip olan ek dosyalar için başka bir damla ekleyin. Aslında, içerik olarak Gıt olamaz karması ilk iki karakter dizinin adı ve gerisi içinde dosya adı ile dosya sisteminde depolanır. Bu yüzden yeniden adlandırır tespit sağlamalarının karşılaştırarak meselesi.

Yeniden adlandırılan bir dosya için küçük değişiklikleri tespit etmek için, Gıt belli bir algoritma ve eğer bu bir yeniden adlandırma olup olmadığını görmek için bir eşik sınırı kullanır. Örneğin, git diff -M bayrak bakabilirsiniz. Ayrıca merge.renameLimit gibi yapılandırma değerleri (a sırasında yeniden tespiti yaparken göz önüne almanız gereken dosya sayısını birleştirme) var.

Git nasıl ele aldığını anlamak içinbenzeryukarıda da belirtildiği gibi dosyaları (dönüşümler dosyası ne yani, yeniden adlandırır olarak kabul edilir), yapılandırma seçenekleri ve bayrakları kullanılabilir keşfetmek. İle nasıl düşünülmesi gerek yok. Git aslında bu görevleri gerçekleştirir anlamak için, metin farklılıkları bulmak için algoritmalar bak ve oku gıt kaynak kodu.

Algoritmalar diff için uygulanır, birleştirme ve amaçları -- git saklar nasıl etkilemez oturum açın. Dosya içeriği herhangi bir küçük değişiklik, yeni bir nesne için daha ekleniyor. Delta veya diff o seviyede oluyor. Tabii ki, daha sonra, nesneleri deltalar packfiles saklandığı dolu olabilir, ama yeniden tespit etmeye yönelik değildir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Apple

    Apple

    22 HAZİRAN 2005
  • Break

    Break

    10 Aralık 2005
  • HouseholdHacker

    HouseholdHac

    6 Kasım 2007