Internals
- Git kursu
- Uzman
- Ders 29/32
- 6 dk
nesne veritabanını inceleyip packfile yapısını doğrularsın.
Git Nesne Veritabanı ve Packfile
Git nesneleri (blob, tree, commit, tag) .git/objects altında SHA-1 karmalarıyla saklanır. Başlangıçta gevşek (loose) olan bu nesneler, git gc veya git repack çalıştığında sıkıştırılarak .pack ve .idx dosyalarından oluşan paket dosyalarına (packfile) dönüştürülür. git verify-pack komutu paket dosyalarının bütünlüğünü ve içindeki nesneleri doğrular.
git verify-pack -v .git/objects/pack/*.idx
git cat-file -t <hash>Uygulama Nesne Türünü İncele
hello.txt dosyasını git hash-object -w ile nesne veritabanına ekle. Ardından nesnenin SHA karmasını git cat-file -t ile kontrol ederek türünü terminale yazdır.
Başlangıç kodu
git init -q
echo "CodeBlanks" > hello.txt
# hash-object ile veritabanına yaz ve türü cat-file ile yazdırÖrnek çözüm
git init -q
echo "CodeBlanks" > hello.txt
HASH=$(git hash-object -w hello.txt)
git cat-file -t $HASHBeklenen çıktı
blob
Uygulama Nesneleri Paketle ve Doğrula
Depoda git repack -a -d -q komutunu çalıştırarak tüm gevşek nesneleri paketle. Ardından paket dosyasını git verify-pack ile doğrula ve başarılı olursa terminale PACK OK yazdır.
Başlangıç kodu
git init -q
git config user.name "Dev"
git config user.email "dev@example.com"
echo "v1" > app.txt
git add app.txt
git commit -m "feat" -q
# repack ile paketle ve verify-pack sonrasında PACK OK yazdırÖrnek çözüm
git init -q
git config user.name "Dev"
git config user.email "dev@example.com"
echo "v1" > app.txt
git add app.txt
git commit -m "feat" -q
git repack -a -d -q
git verify-pack .git/objects/pack/*.idx >/dev/null && echo "PACK OK"Beklenen çıktı
PACK OK
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Packfile (.pack) dosyalarının depodaki temel amacı nedir?
- Depoyu uzaktaki sunucuya otomatik olarak dağıtmak
- Gevşek nesneleri sıkıştırıp disk alanından ve ağ bant genişliğinden tasarruf etmek Doğru cevap
- Commit mesajlarını şifreleyerek yetkisiz okumayı engellemek
- Silinen dalların kurtarılması için reflog kayıtlarını yedeklemek
Açıklama: Git gevşek nesneleri tek tek saklamak yerine paketleyip delta sıkıştırması uygular, bu sayede disk alanı ve aktarım süresi büyük ölçüde azalır.
2 Paket Dosyası Doğrulama
git verify-pack ____-v .git/objects/pack/pack-demo.idx
git verify-pack v-v .git/objects/pack/pack-demo.idx
Açıklama: -v (verbose) bayrağı, paket içindeki her nesnenin SHA karmasını, türünü ve boyutunu ayrıntılı listeler.
3 Git İç Yapıları
| Kavram | Anlamı |
|---|---|
blob |
Dosya içeriğini tutar |
tree |
Dizin yapısını tutar |
packfile |
Sıkıştırılmış nesne paketi |
.idx |
Paket nesne dizini |