Klonlamadan önce bir GitHub veri havuzunun boyutunu nasıl görebilirim?


330

Bir Git deposunun klonlamaya karar vermeden önce GitHub'da ne kadar büyük olduğunu görmenin bir yolu var mı?

Bu gerçekten bariz / temel bir istatistik gibi görünüyor, ama GitHub'da nasıl göreceğimi bulamıyorum.



4
@KennyTM çok benzer bir soru, evet, ama bu sadece git protokolünü kullanan herhangi bir yöntem yerine github'a özgüdür.
jhabbott

1
Bilginize, GitHub'ın depo özetine github.com/harshjv/github-repo-size otomatik olarak havuz boyutu ekleyen bu krom uzantısına göz atın . GÜNCELLEME: bunu bir cevap olarak ekledi
Harsh Vakharia

İşte size bir ipucu: Mutlak en büyük veri havuzum yalnızca çeşitli biçimlerde resimler içeriyor, çeşitli uygulamalarda kullandığım simgelerin "sanat eseri" bir kopyası. Ancak GitHub, boyutu 0 olarak bildirir. Bu nedenle, yalnızca bilinen kaynak dosyaların boyutunu dikkate aldığını ve bilinmeyen dosya türlerini dikkate almadığını varsayıyorum.
Jerry Dodge

Yanıtlar:


276

Bu bilgilere GitHub API'sinden erişmenin bir yolu vardır .

Bir havuz hakkında bilgi alınırken adlı bir özellik size, tüm havuzun boyutuyla (tüm geçmişi dahil) kilobayt olarak değerlenir.

Örneğin, Git deposu ağırlıkları 124 MB civarındadır. sizeDöndürülen JSON yük mülkü için değerlidir 124283.

Güncelleme

Boyut, sunucu tarafı çıplak deposunun disk kullanımına bağlı olarak kilobayt cinsinden ifade edilir. Bununla birlikte, büyük bir ağa sahip depolarla çok fazla yer kaybetmemek için GitHub Git Alternates'e güveniyor . Bu yapılandırmada, disk kullanımının çıplak depoya göre hesaplanması paylaşılan nesne deposunu hesaba katmaz ve bu nedenle API çağrısı yoluyla "eksik" bir değer döndürür.

Bu bilgiler GitHub desteği tarafından verilmiştir.


12
Şimdi MB boyutu değil -> O kadar net değil, sorgulanan repo bağlıdır gibi görünüyor ... Küçük depolar bayt cinsinden, büyük megabayt olarak boyutu ortaya çıkarır. GitHub desteğinde bir sorun açtım. Sorun kapanır kapanmaz cevabı güncelleyeceğim.
nulltoken

6
Bu özel depolar için işe yaramıyor gibi görünüyor. Bir şey mi kaçırıyorum? Teşekkürler!
2014'te

14
@nroose Deneyin $ curl -u "{:username}" https://api.github.com/repos/{:organization}/{:repository}. Bkz developer.github.com/v3/#authentication
nulltoken

1
@nulltoken kB / MB vb. ile ilgili sorguda yanıt var mı?
nealmcb

2
Bir repo çatalladım (9 Eylül 2018) ve MB değil, kB
Jacob Stamm

109

Deponun sahibi sizseniz, Hesap AyarlarıDepolarınızı ( https://github.com/settings/repositories ) açarak tam boyutu bulabilirsiniz ve depo boyutu, adının yanında görüntülenir.

Deponun sahibi değilseniz, çatalı çatallayabilir ve ardından aynı yerde kontrol edebilirsiniz.

Biraz hacky: download as a zip fileseçeneği kullanın, belirtilen dosya boyutunu okuyun ve ardından iptal edin.

Zip olarak indirmenin şimdiye kadar çalışıp çalışmadığını hatırlamıyorum, ancak her durumda, şimdi sadece seçili olan dalı geçmişi olmayan indirir.


Zip sıkıştırmasını hesaba katmamak gerekir mi? Kaynak kodu ve metin dosyaları yaklaşık% 60 kadar sıkıştırılabilir düşünüyorum.
14'te ffledgling

İndirme işlemini tamamlamadan zip'in sıkıştırma oranını kontrol etmenin bir yolunun farkında değilim. Tabii ki indirme işlemini tamamlayabilir ve ardından sıkıştırma oranını kontrol edebilirsiniz. Ancak, bu noktada, doğrudan repo boyutunu da açıp kontrol edebilirsiniz. Gerçekten ne kadar doğru olmanız gerektiğine bağlıdır. Ve eğer kontrol etmek için repo indirmek göze eğer.
CoatedMoose

1
Onu bulamadım Settings > Repositories, ancak bunun yerine Account Settings > Repositoriesgit ana sayfanızın altındaki repo boyutunu buldum . Tabii ki, bu yalnızca sahip olduğunuz (veya çatallı) depolarla çalışır.
modulitos

Kuruluşların hesap ayarları repo boyutunu göstermiyor gibi görünüyor, bu nedenle yalnızca kuruluş olarak değil, kullanıcı olarak bir repo sahibiyseniz?
Bennett Brown

2
Zip dosyasının boyutu, gerçek havuz boyutunun hiçbirinde gösterge değildir : 1) yalnızca geçmişin olmadığı belirli bir revizyonda deponun anlık görüntüsünü içerir ve 2) Git depoları sıkıştırılmış paket dosyaları olarak saklanır, mağaza kopyaları vs.
kynan

74

Google Chrome tarayıcı kullanıyorsanız GitHub Depo Boyutu uzantısını yükleyebilirsiniz .

resim açıklamasını buraya girin

Buraya yeniden bağlanın: https://github.com/harshjv/github-repo-size


4
herhangi bir firefox portu var mı?
Banee Ishaque K

2
Onun aynı değildir @BaneeIshaqueK ama size Repo boyutu çek o gösterir burada
Syed Shamikh Shabbir

1
GÜNCELLEME Şimdi, Github jetonunu sağladığınız sürece özel depolarda bile mükemmel çalışır.
Siddhant Rimal

2
Yine de güvenilir değil, doğru boyutu bildirmeyen GitHub API'sını kullanıyor. Ben görüntüleri (kod) dışında hiçbir şey ile bir havuz var ve sahip olduğum en büyük repo olmasına rağmen API boyutu 0 olarak bildirir. Bu uzantı bana bu özel reponun boyutunu göstermiyor (muhtemelen 0'ı gördüğü için).
Jerry Dodge

19

@larowlan harika örnek kod. Yeni GitHub API V3 ile curl ifadesinin güncellenmesi gerekiyor. Ayrıca, oturum açma artık gerekli değildir:

curl https://api.github.com/repos/$2/$3 2> /dev/null | grep size | tr -dc '[:digit:]'

Örneğin:

curl https://api.github.com/repos/dotnet/roslyn 2> /dev/null | grep size | tr -dc '[:digit:]'

931668neredeyse bir GB olan döner (KB cinsinden).


5
Bu özel depolar için işe yaramıyor gibi görünüyor. Kaçırdığım bir şey var mı? Teşekkürler!
2014'te

1
Keşke cevabınızı bazı açıklamalarla daha da genişletirseniz, insanlar cevaplarını ihtiyaçlarına göre değiştirebilir.
Shimmy Weitzhandler

10

Bunu curl (sudo apt-get curl) ve json pretty (sudo gem install jsonpretty json) ile yapmak için:

curl -u "YOURGITHUBUSERNAME" http://github.com/api/v2/json/repos/show/OWNER/REPOSITORY |
  jsonpretty

YOURGITHUBUSERNAME yerine GitHub kullanıcı adınızı yazın (şekil).

SAHİBİ'yi depo sahibinin Git kullanıcı adıyla değiştirin. REPOSITORY öğesini havuz adıyla değiştirin.

Veya güzel bir Bash betiği olarak (bunu gitrepo-info adlı bir dosyaya yapıştırın):

#!/bin/bash
if [ $# -ne 3 ]
then
  echo "Usage: gitrepo-info <username> <owner> <repo>"
  exit 65
fi
curl -u "$1" http://github.com/api/v2/json/repos/show/$2/$3|jsonpretty

Şöyle kullanın:

gitrepo-info larowlan pisi reel

Bu bana GitHub'daki pisi / reel deposu hakkında bilgi verecektir .


1

GitHub API'sini izlemeniz gerekir. Belgelere bakın burada sizin depo ile ilgili tüm detaylar için. GET isteğinde bulunmanızı gerektirir :

GET / repos /: sahip /: depo

İki şeyi değiştirmeniz gerekir:

  1. : owner - depoya sahip olan kişinin kullanıcı adı
  2. : havuz - Deponun adı

Örneğin, kullanıcı adım maheshmnj ve bir depoya sahibim, flutter-ui-nice , bu yüzden GET URL'm şöyle olacak:

https://api.github.com/repos/maheshmnj/flutter-ui-nice

Bir GET isteği yaparken, bazı JSON verileriyle dolu olacaksınız ve muhtemelen 78 numaralı satırda , deponun boyutunu döndürecek boyut adında bir anahtar görmelisiniz .

İpucu: JSON ile çalışırken JSON okumayı kolaylaştırmak için JSON verilerini formatlayan bir eklenti eklemenizi öneririm. Eklentiyi yükleyin .


C) Birçoğunun bildirdiği gibi, bu boyut doğru değil ve güvenilir değil. B) Öyle olsa bile, JSON'u, satır numarasını ve biçimlendirmeyi görsel olarak okumakla ilgili notlarınız ... hepsi anlamsız. JSON insanların okuması değil, bilgisayarların okuması içindir. sizeAnahtarı satır 78'de değil, yanıtta okumayı söylemelisiniz. Bahsetmemek gerekirse , farklı biçimlendiriciler farklı yerlerde farklı satır sonlarına sahip olacak ve istenen verileri farklı bir satır numarasına bırakacaktır.
Jerry Dodge

@JerryDodge ilk olarak bahsettiğim yanıtı dikkatlice okumalısınız `` `size size adlandırılmış bir anahtar görmelisiniz '' ve probably78 numaralı satırda görmeniz gerektiğini söyledim , böylece boyut anahtarını 78 civarında görmeniz gerektiğini gösteriyor , ikinci şey github apis boyutu doğru değilse, github apis daha doğru bir şey bulacaksınız sanmıyorum.
maheshmnj

Bir görüntü havuzum var. Görüntüler ikili verilerdir. Bu depoda hiç metin dosyası yok. GitHub, 0 bayt tükettiği her yere rapor verir. Hatta web sitesi / eklenti.
Jerry Dodge

0

@Larowlan, @VMTrooper ve @vahid chakoshy çözümlerini özetlemek için:

#!/usr/bin/env bash


if [ "$#" -eq 2 ]; then
    echo "$(echo "scale=2; $(curl https://api.github.com/repos/$1/$2 2>/dev/null \
    | grep size | head -1 | tr -dc '[:digit:]') / 1024" | bc)MB"
elif [ "$#" -eq 3 ] && [ "$1" == "-z" ]; then
    # For some reason Content-Length header is returned only on second try
    curl -I https://codeload.github.com/$2/$3/zip/master &>/dev/null  
    echo "$(echo "scale=2; $(curl -I https://codeload.github.com/$2/$3/zip/master \
    2>/dev/null | grep Content-Length | cut -d' ' -f2 | tr -d '\r') / 1024 / 1024" \
    | bc)MB"
else
    printf "Usage: $(basename $0) [-z] OWNER REPO\n\n"
    printf "Get github repository size or, optionally [-z], the size of the zipped\n"
    printf "master branch (`Download ZIP` link on repo page).\n"
    exit 1
fi

0

Özel bir depo için https://github.com/settings/tokens adresinden Kişisel Erişim Jetonu almanız gerekir .

Ardından ayrıntıları almak için aşağıdaki kıvrılma komutunu kullanın ([jeton], [sahip] ve [ad] değerlerinin yerine):

curl -u git:[token] https://api.github.com/repos/[owner]/[name] 2> /dev/null | grep size

Daha önce de belirtildiği gibi, boyut MB veya KB olabilir.

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.