Bagaimana saya bisa melihat ukuran repositori GitHub sebelum mengkloningnya?

331

Apakah ada cara untuk melihat seberapa besar repositori Git di GitHub sebelum Anda memutuskan untuk mengkloningnya?

Ini sepertinya statistik yang sangat jelas / dasar, tetapi saya tidak dapat menemukan cara melihatnya di GitHub sama sekali.

jhabbott
sumber
4
@ KennyTM pertanyaan yang sangat mirip, ya, tapi ini khusus untuk github daripada metode apa pun hanya menggunakan protokol git.
jhabbott
1
FYI, lihat ekstensi chrome ini yang secara otomatis menambahkan ukuran repositori ke ringkasan repositori GitHub github.com/harshjv/github-repo-size . UPDATE: menambahkan ini sebagai jawaban
Harsh Vakharia
Ini sebuah petunjuk: Repositori terbesar saya yang absolut hanya berisi gambar dari berbagai format, ini adalah repo ikon "artwork" yang saya gunakan di berbagai aplikasi. Namun, GitHub melaporkan ukurannya sebagai 0. Jadi saya berasumsi ini hanya mempertimbangkan ukuran file sumber yang diketahui, dan tidak mempertimbangkan jenis file yang tidak dikenal.
Jerry Dodge

Jawaban:

276

Ada cara untuk mengakses informasi ini melalui API GitHub .

Saat mengambil informasi tentang repositori, properti bernama sizedinilai dengan ukuran seluruh repositori (termasuk semua sejarahnya), dalam kilobyte.

Sebagai contoh, repositori Git memiliki bobot sekitar 124 MB. The sizemilik JSON payload kembali dihargai untuk 124283.

Memperbarui

Ukurannya memang dinyatakan dalam kilobyte berdasarkan pada penggunaan disk dari repositori telanjang server-side. Namun, untuk menghindari pemborosan ruang terlalu banyak dengan repositori dengan jaringan besar, GitHub bergantung pada Alternatif Git . Dalam konfigurasi ini, menghitung penggunaan disk terhadap repositori kosong tidak memperhitungkan penyimpanan objek bersama dan dengan demikian mengembalikan nilai "tidak lengkap" melalui panggilan API.

Informasi ini telah diberikan oleh dukungan GitHub.

nulltoken
sumber
12
Bukankah ukuran dalam MB sekarang -> Tidak begitu jelas, sepertinya itu tergantung pada repo yang ditanyai ... Repo kecil mengekspos ukuran dalam byte, yang besar dalam megabita. Saya telah membuka masalah di dukungan GitHub. Saya akan memperbarui jawabannya segera setelah masalah ditutup.
nulltoken
6
Ini sepertinya tidak berfungsi untuk repo pribadi. Apakah saya melewatkan sesuatu? Terima kasih!
nroose
14
@tidak coba $ curl -u "{:username}" https://api.github.com/repos/{:organization}/{:repository}. Lihat developer.github.com/v3/#authentication
nulltoken
1
@nulltoken Apa tanggapan atas pertanyaan tentang kB / MB dll?
nealmcb
2
Hanya mengadakan repo (9 September 2018) dan ini kB, bukan MB
Jacob Stamm
109

Jika Anda memiliki repositori, Anda dapat menemukan ukuran yang tepat dengan membuka Pengaturan Akun Anda → Repositori ( https://github.com/settings/repositori ), dan ukuran repositori ditampilkan di sebelah penunjukannya.

Jika Anda tidak memiliki repositori, Anda dapat membayarnya lalu memeriksa di tempat yang sama.

Agak diretas: gunakan download as a zip fileopsi, baca ukuran file yang ditunjukkan dan kemudian batalkan.

Saya tidak ingat apakah mengunduh sebagai zip pernah berfungsi, tetapi bagaimanapun, melakukannya sekarang hanya mengunduh cabang yang dipilih saat ini tanpa riwayat.

CoatedMoose
sumber
Tidakkah orang harus memperhitungkan kompresi zip? Kode sumber dan file teks dapat dikompresi hingga sekitar 60% saya pikir.
ffledgling
Saya tidak mengetahui cara untuk memeriksa rasio kompresi zip tanpa menyelesaikan unduhan. Tentu saja Anda dapat menyelesaikan unduhan dan kemudian memeriksa rasio kompresi. Namun, pada titik itu, Anda mungkin juga unzip dan memeriksa ukuran repo secara langsung. Ini benar-benar tergantung pada seberapa akurat Anda perlu. Dan jika Anda mampu mengunduh repo untuk memeriksa.
CoatedMoose
1
Saya tidak dapat menemukannya Settings > Repositories, tetapi malah menemukan ukuran repo di bawah Account Settings > Repositorieshalaman utama git Anda. Tentu saja, ini hanya berfungsi dengan repo yang Anda miliki (atau garpu).
modulitos
Pengaturan akun organisasi tampaknya tidak menunjukkan ukuran repo, jadi apakah hanya jika Anda memiliki repo sebagai pengguna dan bukan sebagai organisasi?
Bennett Brown
2
Ukuran file zip tidak ada indikasi sama sekali dari ukuran repositori aktual: 1) itu hanya mencakup snapshot repositori pada revisi yang diberikan tanpa riwayat dan 2) Repositori Git disimpan sebagai file paket yang dikompresi, jangan simpan duplikat dll.
kynan
74

Jika Anda menggunakan browser Google Chrome, Anda dapat menginstal ekstensi Ukuran Repositori GitHub .

masukkan deskripsi gambar di sini

Repo di sini: https://github.com/harshjv/github-repo-size

Ombak besar
sumber
4
ada port firefox?
Banee Ishaque K
2
@BaneeIshaqueK ini tidak sama tetapi itu menunjukkan ukuran repo cek di sini
Syed Shamikh Shabbir
1
UPDATE Sekarang, berfungsi dengan baik bahkan dalam repositori pribadi selama Anda memberikan token Github.
Siddhant Rimal
2
Masih tidak dapat diandalkan, ia menggunakan API GitHub, yang tidak melaporkan ukuran yang benar. Saya memiliki repositori dengan hanya gambar (tanpa kode), dan API melaporkan ukurannya sebagai 0, meskipun itu repo terbesar yang saya miliki. Ekstensi ini bahkan tidak menunjukkan ukuran repo khusus ini (mungkin karena melihat 0).
Jerry Dodge
19

@larowlan kode sampel yang bagus. Dengan GitHub API V3 yang baru, pernyataan curl perlu diperbarui. Juga, login tidak lagi diperlukan:

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

Sebagai contoh:

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

mengembalikan 931668(dalam KB), yang hampir merupakan GB.

VMTrooper
sumber
5
Ini sepertinya tidak berfungsi untuk repo pribadi. Apakah ada sesuatu yang saya lewatkan? Terima kasih!
nroose
1
Saya berharap Anda akan memperluas jawaban Anda lebih banyak dengan beberapa penjelasan, sehingga orang dapat mengubahnya sesuai dengan kebutuhan mereka.
Shimmy Weitzhandler
10

Untuk melakukan ini dengan curl (sudo apt-get curl) dan json pretty (sudo gem install jsonpretty json):

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

Ganti YOURGITHUBUSERNAME dengan nama pengguna GitHub Anda (lihat gambar).

Ganti PEMILIK dengan Git username pemilik repositori. Ganti REPOSITORY dengan nama repositori.

Atau sebagai skrip Bash yang bagus (rekatkan ini dalam file bernama gitrepo-info):

#!/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

Gunakan seperti ini:

gitrepo-info larowlan pisi reel

Ini akan memberi saya informasi tentang repositori pisi / reel di GitHub.

larowlan
sumber
1

Anda harus mengikuti API GitHub. Lihat dokumentasi di sini untuk semua detail mengenai repositori Anda. Anda harus membuat permintaan GET sebagai:

DAPATKAN / repos /: pemilik /: repositori

Anda perlu mengganti dua hal:

  1. : owner - nama pengguna orang yang memiliki repositori
  2. : repository - Nama repositori

Misalnya, nama pengguna saya maheshmnj , dan saya memiliki repositori, flutter-ui-nice , jadi URL GET saya adalah:

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

Pada membuat permintaan GET, Anda akan dibanjiri dengan beberapa data JSON dan mungkin pada nomor baris 78 Anda akan melihat ukuran bernama kunci yang akan mengembalikan ukuran repositori.

Kiat: Saat bekerja dengan JSON, saya sarankan Anda untuk menambahkan plugin yang memformat data JSON untuk memudahkan membaca JSON. Instal pengaya .

maheshmnj
sumber
A) Karena banyak yang melaporkan, ukuran ini tidak akurat dan tidak dapat diandalkan. B) Bahkan jika itu, catatan Anda tentang membaca JSON secara visual, nomor baris, dan format ... semua tidak ada gunanya. JSON tidak diperuntukkan bagi manusia untuk dibaca, ini diperuntukkan bagi komputer untuk membaca. Anda harus menyebutkan untuk membaca sizekunci dalam respons, bukan baris 78. Belum lagi, pembuat format yang berbeda akan memiliki jeda baris yang berbeda di tempat yang berbeda, meninggalkan data yang diinginkan pada nomor baris yang berbeda.
Jerry Dodge
@ JerryDodge hal pertama yang Anda harus hati-hati membaca jawaban yang telah saya sebutkan `` `Anda harus melihat kunci bernama ukuran` `` dan saya berkata Anda harus probablymelihatnya di saluran no 78, sehingga menunjukkan Anda harus melihat kunci ukuran di suatu tempat di sekitar 78 , hal kedua jika ukuran dari apis github tidak akurat, saya tidak berpikir Anda akan menemukan sesuatu yang lebih akurat daripada apis github.
maheshmnj
Saya memiliki repositori gambar. Gambar adalah data biner. Tidak ada file teks dalam repo ini sama sekali. GitHub melaporkan di mana-mana bahwa ia mengkonsumsi 0 byte. Bahkan situs web / plugin.
Jerry Dodge
0

Untuk merangkum solusi @larowlan, @VMTrooper, dan @vahid chakoshy:

#!/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
golem
sumber
0

Untuk repositori pribadi, Anda harus mendapatkan Token Akses Pribadi dari https://github.com/settings/tokens .

Kemudian gunakan perintah ikal berikut untuk mendapatkan detail (mengganti nilai untuk [token], [pemilik] dan [nama]):

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

Seperti yang disebutkan sebelumnya, ukuran mungkin dalam MB atau KB.

Mike Godin
sumber