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.