16 ŞUBAT 2009, PAZARTESİ
Atama Gıt olmadan SHA1'In Git
Git bir dosyanın SHA1 karma atarken anladığım kadarıyla bu SHA1 dosya içeriğine göre özeldir.
Eğer bir dosya başka bir depodan hareket ederse sonuç olarak dosyanın SHA1 içeriği değişmedi aynı kalır.
Nasıl Gıt SHA1 özetini hesaplar? Tam sıkıştırılmamış dosya içeriği işe yarar?
Git SHA1 dışarıda atama taklit etmek istiyorum.
CEVAP
16 ŞUBAT 2009, PAZARTESİ
Bu bir dosyanın SHA1 hesaplar nasıl ya, Git açısından,"") blob:
sha1("blob " filesize "\0" data)
Kolayca Kendin Git yüklü olmadan hesaplayabilirsiniz. "\0" BOŞ bayt, iki karakter dizesi. unutmayın
Örneğin, boş bir dosya hash:
sha1("blob 0\0") = "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391"
$ touch empty
$ git hash-object empty
e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
Başka bir örnek:
sha1("blob 7\0foobar\n") = "323fae03f4606ea9991df8befbb2fca795e648fa"
$ echo "foobar" > foo.txt
$ git hash-object foo.txt
323fae03f4606ea9991df8befbb2fca795e648fa
Burada bir Python uygulaması
from hashlib import sha1
def githash(data):
s = sha1()
s.update("blob %u\0" % len(data))
s.update(data)
return s.hexdigest()
Bunu Paylaş:
Aşağıdaki Modül hata ayıklama bilgisi ...
Nasıl istek bağlam yolu olmadan URİ al...
görüntü yok olmadan jQuery fadeOut?...
Etmesinin önünü sudo olmadan hata atar...
Test olmadan Maven ambalaj (test atla)...