Git deposunun boyutunu bulma


Yanıtlar:


260

GÜNCELLEME git 1.8.3 pürüzlü bir boyut elde etmenin daha etkili bir yolunu sundu: git count-objects -vH(@VonC'nin cevabına bakınız)

Farklı boyutlarda "tam boyut" için şunları kullanabilirsiniz:

git bundle create tmp.bundle --all
du -sh tmp.bundle

Kapat (ama tam değil :)

git gc
du -sh .git/

İkincisi ile de sayıyor olacaksınız:

  • kancalar
  • config (uzaktan kumandalar, push şubeleri, ayarlar (boşluk, birleştirme, takma adlar, kullanıcı ayrıntıları vb.)
  • stashes (bkz. Uzak bir depodan bir stash'ı yerel bir şubeye alabilir miyim? )
  • önbelleği yeniden oluştur (bu önemli olabilir)
  • reflogs
  • yedekler (filtre dalından, örn.) ve diğer çeşitli şeyler (rebase, bisect vs.'den ara durum)

Teşekkürler! İlk davranış, toplam klon büyüklüğünü daha doğru bir şekilde yansıttı, ancak ikincisi de oldukça yakındı.
— 14'de mschallert

7
Not: bu cevap güncel değil. Git sürümleri için VonC'nin cevabına bakınız > = 1.8.3.
— John Dibling

Ayrıca cevabımın kendi değeri olan daha eksiksiz bir yol olduğunu unutmayın.
— sehe

Neyi ekler misiniz git bundle, git gcaslında ne yapar? başka (istenmeyen) bir arşiv oluşturacak ve ardından boyutu ölçecek mi?
— Ramesh Pareek

1
@RameshPareek evet. Bu dudosyanın boyutunu ölçmek için kullanıyorum çünkü bu oldukça açıktır .
— sehe

252

Git 1.8.3'ten (22 Nisan 2013) beri :

" git count-objects" öğrenildi " --human-readable" aka " -H" seçeneği, Ki/ Mi/ içinde çeşitli büyük sayıları GiBgerektiği gibi gösterme seçeneği .

Yani kombine edilebilir -vbahsettiği seçeneği Jack Morrison içinde onun cevabını .

git gc
git count-objects -vH

( git gcBelirttiği gibi, önemli olan ABB bireyin cevap )

Artı (hala git 1.8.3), çıktı daha tamamlandı:

" git count-objects -v" , nesne deposundaki artık geçici paket dosyalarını ve diğer çöpleri bildirmeyi öğrendi .


116

Git komutu

git count-objects -v

git deposunun boyutu hakkında iyi bir tahmin verecektir. -V bayrağı olmadan, yalnızca açılmış dosyalarınızın boyutunu söyler. Bu komut $ PATH'nızda olmayabilir, onu izlemeniz gerekebilir (örneğin Ubuntu'da / usr / lib / git-core / dizininde buldum).

Git kılavuzundan:

-v, --verbose

Tüketilen gevşek nesne ve disk alanı sayısına ek olarak, paket içi nesne sayısını, paket sayısını, bu paketler tarafından tüketilen disk alanını ve git prune-packed çalıştırılarak kaldırılabilecek nesne sayısını bildirir.

Çıktınız aşağıdakine benzer olacaktır:

count: 1910
size: 19764
in-pack: 41814
packs: 3
size-pack: 1066963
prune-packable: 1
garbage: 0

Aradığınız hat size-pack. Bu, paketlenmiş tüm taahhüt nesnelerinin boyutu veya yeni klonlanmış depo için mümkün olan en küçük boyuttur.


4
Benim tecrübelerime göre, git count-objects -vişe yaramadığında çalışır git-count-objects -v(çünkü PATH'ımda değil).
— mwolfetech

5
@psihodelia Deponuz henüz paketlenmemiş olabileceği için çalıştırmadan git gcönce çalıştırmanız git count-objects -vgerekebilir. Kanıt için burada ilk cevaba bakınız: stackoverflow.com/questions/3532740/…
— Jack Morrison

5
Sadece istenilen hat almak için grep kullanabilirsiniz: git count-objects -vH | grep 'size-pack'. H@VonC onun cevabını söylediği gibi, insan okunabilir bir biçimde göstermektir.
— alko989

git count-objects --help: size-pack: KiB cinsinden paketler tarafından tüketilen disk alanı (-H belirtilmediği sürece)
— auralbee

5

Kullanabilirsin git-sizer. In --verboseayarında, örnek çıktısı (aşağıda) 'dir. Arayın Total size of fileshattı.

$ git-sizer --verbose
Processing blobs: 1652370
Processing trees: 3396199
Processing commits: 722647
Matching commits to trees: 722647
Processing annotated tags: 534
Processing references: 539
| Name                         | Value     | Level of concern               |
| ---------------------------- | --------- | ------------------------------ |
| Overall repository size      |           |                                |
| * Commits                    |           |                                |
|   * Count                    |   723 k   | *                              |
|   * Total size               |   525 MiB | **                             |
| * Trees                      |           |                                |
|   * Count                    |  3.40 M   | **                             |
|   * Total size               |  9.00 GiB | ****                           |
|   * Total tree entries       |   264 M   | *****                          |
| * Blobs                      |           |                                |
|   * Count                    |  1.65 M   | *                              |
|   * Total size               |  55.8 GiB | *****                          |
| * Annotated tags             |           |                                |
|   * Count                    |   534     |                                |
| * References                 |           |                                |
|   * Count                    |   539     |                                |
|                              |           |                                |
| Biggest objects              |           |                                |
| * Commits                    |           |                                |
|   * Maximum size         [1] |  72.7 KiB | *                              |
|   * Maximum parents      [2] |    66     | ******                         |
| * Trees                      |           |                                |
|   * Maximum entries      [3] |  1.68 k   | *                              |
| * Blobs                      |           |                                |
|   * Maximum size         [4] |  13.5 MiB | *                              |
|                              |           |                                |
| History structure            |           |                                |
| * Maximum history depth      |   136 k   |                                |
| * Maximum tag depth      [5] |     1     |                                |
|                              |           |                                |
| Biggest checkouts            |           |                                |
| * Number of directories  [6] |  4.38 k   | **                             |
| * Maximum path depth     [7] |    13     | *                              |
| * Maximum path length    [8] |   134 B   | *                              |
| * Number of files        [9] |  62.3 k   | *                              |
| * Total size of files    [9] |   747 MiB |                                |
| * Number of symlinks    [10] |    40     |                                |
| * Number of submodules       |     0     |                                |

[1]  91cc53b0c78596a73fa708cceb7313e7168bb146
[2]  2cde51fbd0f310c8a2c5f977e665c0ac3945b46d
[3]  4f86eed5893207aca2c2da86b35b38f2e1ec1fc8 (refs/heads/master:arch/arm/boot/dts)
[4]  a02b6794337286bc12c907c33d5d75537c240bd0 (refs/heads/master:drivers/gpu/drm/amd/include/asic_reg/vega10/NBIO/nbio_6_1_sh_mask.h)
[5]  5dc01c595e6c6ec9ccda4f6f69c131c0dd945f8c (refs/tags/v2.6.11)
[6]  1459754b9d9acc2ffac8525bed6691e15913c6e2 (589b754df3f37ca0a1f96fccde7f91c59266f38a^{tree})
[7]  78a269635e76ed927e17d7883f2d90313570fdbc (dae09011115133666e47c35673c0564b0a702db7^{tree})
[8]  ce5f2e31d3bdc1186041fdfd27a5ac96e728f2c5 (refs/heads/master^{tree})
[9]  532bdadc08402b7a72a4b45a2e02e5c710b7d626 (e9ef1fe312b533592e39cddc1327463c30b0ed8d^{tree})
[10] f29a5ea76884ac37e1197bef1941f62fda3f7b99 (f5308d1b83eba20e69df5e0926ba7257c8dd9074^{tree})

1
Bu güzel çünkü toplam klonlama boyutundan daha fazla bilgi gösteriyor. Hala bilmek istediğimi göstermeyen bir şey, ZIP'in indirildiğinde ne kadar büyük olacağıdır (tüm taahhütleri içermez).
— NH.


@Downvoter akıl yürütmesini açıklar mı, açıklamaz mı?
— serv-inc

1

Git LFS kullanırsanız, git count-objects ikili dosyalarınızı değil, yalnızca işaretçileri sayar.

LFS dosyalarınız Artifactorys tarafından yönetiliyorsa, REST API'sini kullanmalısınız:

  • Herhangi bir arama motorundan www.jfrog.com API'sını edinin
  • Depolama Alanı Özet Bilgilerine Bakın

1

ben düşünüyorum bu size repo tarihinin tüm dosyaların toplam listesini verir:

git rev-list --objects --all | git cat-file --batch-check="%(objectsize) %(rest)" | cut -d" " -f1 | paste -s -d + - | bc

Sen yerini alabilecek --allbir treeish (ile HEAD, origin/masterbir şube boyutunu hesaplamak için, vs.).


-1

Depo GitHub üzerindeyse , açık kaynaklı Android uygulaması Octodroid'i kullanabilirsiniz varsayılan olarak boyutunu görüntüleyen .

Örneğin, mptcp deposu ile:

Octodroid üzerinde çok yollu TCP havuzunun boyutu

Klonlama sırasında deponun boyutu

Feragatname: Octodroid oluşturmadım.


1
Farklı birimlerdedir (GB x GiB). Bu arada 1.71 GB = 1.84 GiB, sadece dönüşüyor ve turlarla ilgilenmiyor.
— Luciano

Üzgünüz, yazarken onları karıştırdım, doğru ilişki: 1,71 GiB = 1,84 GB
— Luciano
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.