ฉันจะดูขนาดของที่เก็บ GitHub ก่อนทำการโคลนได้อย่างไร


330

มีวิธีดูว่าที่เก็บ Git มีขนาดใหญ่บน GitHub ก่อนที่คุณจะตัดสินใจโคลนหรือไม่

ดูเหมือนว่าจะเป็นสถิติที่ชัดเจน / พื้นฐานจริงๆ แต่ฉันไม่สามารถหาวิธีดูได้ใน GitHub เลย



4
@ KennyTM คำถามที่คล้ายกันมากใช่ แต่นี่เป็นวิธีเฉพาะสำหรับ github มากกว่าวิธีการใด ๆ ที่ใช้เฉพาะโปรโตคอล git
jhabbott

1
FYI, ตรวจสอบนี้ขยายโครเมี่ยมที่จะเพิ่มขนาดพื้นที่เก็บข้อมูลเพื่อสรุปพื้นที่เก็บข้อมูลของ GitHub github.com/harshjv/github-repo-size UPDATE: เพิ่มคำตอบนี้เป็นคำตอบ
Harsh Vakharia เมื่อ

นี่คือคำใบ้: ที่เก็บที่ใหญ่ที่สุดของฉันมีเพียงภาพในรูปแบบต่าง ๆ เท่านั้นมันเป็น "งานศิลปะ" repo ของไอคอนที่ฉันใช้ในแอพต่างๆ กระนั้น GitHub รายงานขนาดเป็น 0 ดังนั้นฉันสมมติว่ามันจะพิจารณาขนาดของไฟล์ต้นฉบับที่รู้จักเท่านั้นและไม่พิจารณาประเภทไฟล์ที่ไม่รู้จัก
Jerry Dodge

คำตอบ:


276

ไม่มีทางที่จะเข้าถึงข้อมูลนี้ผ่านการเป็นGitHub API

เมื่อดึงข้อมูลเกี่ยวกับที่เก็บทรัพย์สินที่มีชื่อsizeจะมีค่ากับขนาดของพื้นที่เก็บข้อมูลทั้งหมด (รวมถึงประวัติทั้งหมดของมัน) ในหน่วยกิโลไบต์

ตัวอย่างเช่นที่เก็บ Git มีน้ำหนักประมาณ 124 MB sizeทรัพย์สินของกลับ JSON 124283น้ำหนักบรรทุกที่มีมูลค่าการ

ปรับปรุง

ขนาดจะแสดงเป็นกิโลไบต์ตามการใช้งานดิสก์ของที่เก็บข้อมูลฝั่งเซิร์ฟเวอร์ อย่างไรก็ตามในการสั่งซื้อเพื่อหลีกเลี่ยงการสูญเสียพื้นที่มากเกินไปกับที่เก็บที่มีเครือข่ายขนาดใหญ่ GitHub อาศัยGit สลับ ในการกำหนดค่านี้การคำนวณการใช้ดิสก์กับที่เก็บข้อมูลเปลือยไม่ได้คำนึงถึงที่เก็บวัตถุที่ใช้ร่วมกันและส่งกลับค่า "ไม่สมบูรณ์" ผ่านการเรียก API

ข้อมูลนี้ได้รับการสนับสนุนจาก GitHub


12
ไม่ใช่ขนาดเป็น MB ในตอนนี้ -> ยังไม่ชัดเจนดูเหมือนว่าขึ้นอยู่กับ repo ที่ถูกสอบถาม ... repos ขนาดเล็กจะแสดงขนาดเป็นไบต์ขนาดใหญ่เป็นเมกะไบต์ ฉันเปิดปัญหาที่ฝ่ายสนับสนุนของ GitHub ฉันจะอัปเดตคำตอบทันทีที่ปัญหาถูกปิด
nulltoken

6
ดูเหมือนว่าจะใช้งานไม่ได้กับ repos ส่วนตัว ฉันพลาดอะไรไปรึเปล่า? ขอบคุณ!
nroose

14
$ curl -u "{:username}" https://api.github.com/repos/{:organization}/{:repository}ลอง @nroose ดูdeveloper.github.com/v3/#authentication
nulltoken

1
@nulltoken การตอบสนองต่อการสอบถามเกี่ยวกับ kB / MB ฯลฯ ?
nealmcb

2
เพิ่งแยกคืน repo (9 กันยายน 2018) และเป็น kB ไม่ใช่ MB
Jacob Stamm

109

หากคุณเป็นเจ้าของพื้นที่เก็บข้อมูลคุณสามารถค้นหาขนาดที่แน่นอนได้โดยเปิดการตั้งค่าบัญชีของคุณ→ที่เก็บ ( https://github.com/settings/repositories ) และขนาดพื้นที่เก็บข้อมูลจะปรากฏถัดจากชื่อที่ตั้ง

หากคุณไม่ได้เป็นเจ้าของพื้นที่เก็บข้อมูลคุณสามารถแยกมันและตรวจสอบในสถานที่เดียวกัน

ค่อนข้างแฮ็ค: ใช้download as a zip fileตัวเลือกอ่านขนาดไฟล์ที่ระบุและยกเลิก

ฉันจำไม่ได้ว่าการดาวน์โหลดเป็น zip ใช้งานได้ แต่ไม่ว่าในกรณีใดก็ตามให้ทำตอนนี้ดาวน์โหลดเฉพาะสาขาที่เลือกในปัจจุบันที่ไม่มีประวัติ


ไม่ควรคำนึงถึงการบีบอัดรหัสไปรษณีย์หรือไม่ ซอร์สโค้ดและไฟล์ข้อความสามารถบีบอัดได้สูงสุดประมาณ 60% ฉันคิดว่า
ffledgling

ฉันไม่รู้วิธีตรวจสอบอัตราส่วนการบีบอัดของ zip โดยไม่ต้องดาวน์โหลดจนเสร็จ แน่นอนคุณสามารถดาวน์โหลดจนเสร็จสมบูรณ์จากนั้นตรวจสอบอัตราส่วนการบีบอัด อย่างไรก็ตาม ณ จุดนั้นคุณอาจคลายซิปและตรวจสอบขนาด repo โดยตรง มันขึ้นอยู่กับความแม่นยำของคุณ และถ้าคุณสามารถที่จะดาวน์โหลด repo เพื่อตรวจสอบ
CoatedMoose

1
ฉันไม่สามารถหามันได้Settings > Repositoriesแต่พบขนาด repo ที่อยู่Account Settings > Repositoriesนอกโฮมเพจของคอมไพล์ของคุณ แน่นอนว่าใช้ได้เฉพาะกับ repos ที่คุณเป็นเจ้าของ (หรือทางแยก)
modulitos

การตั้งค่าบัญชีขององค์กรดูเหมือนจะไม่แสดงขนาด repo ดังนั้นเฉพาะในกรณีที่คุณเป็นเจ้าของ repo ในฐานะผู้ใช้และไม่ใช่ในฐานะองค์กร
Bennett Brown

2
ขนาดของไฟล์ zip ไม่ได้บ่งบอกถึงขนาดที่เก็บข้อมูลที่แท้จริงทั้งหมด: 1) มันรวมเฉพาะสแน็ปช็อตของที่เก็บที่การแก้ไขที่กำหนดโดยไม่มีประวัติและ 2) ที่เก็บ Git ถูกเก็บเป็นไฟล์แพ็คที่บีบอัด เก็บรายการที่ซ้ำกัน ฯลฯ
kynan

74

หากคุณใช้เบราว์เซอร์ Google Chrome คุณสามารถติดตั้งส่วนขยายGitHub Repository Size

ป้อนคำอธิบายรูปภาพที่นี่

Repo ที่นี่: https://github.com/harshjv/github-repo-size


4
พอร์ต firefox ใด ๆ
Banee Ishaque K

2
@BaneeIshaqueK มันไม่เหมือนกัน แต่มันจะแสดงขนาด repo ให้คุณตรวจสอบได้ที่นี่
Syed Shamikh Shabbir

1
อัปเดตตอนนี้ทำงานได้อย่างสมบูรณ์แบบแม้ในที่เก็บส่วนตัวตราบใดที่คุณให้โทเค็น Github
Siddhant Rimal

2
ยังไม่น่าเชื่อถือ แต่ใช้ GitHub API ซึ่งไม่ได้รายงานขนาดที่ถูกต้อง ฉันมีพื้นที่เก็บข้อมูลที่ไม่มีอะไรนอกจากรูปภาพ (ไม่มีรหัส) และ API รายงานขนาดเป็น 0 แม้ว่าจะเป็น repo ที่ใหญ่ที่สุดที่ฉันมี ส่วนขยายนี้ไม่ได้แสดงขนาดของ repo นี้ให้ฉันด้วย (อาจเป็นเพราะมันเห็น 0)
Jerry Dodge

19

@larowlan รหัสตัวอย่างที่ดี ด้วย GitHub API V3 ใหม่คำสั่ง curl จำเป็นต้องได้รับการอัปเดต นอกจากนี้การเข้าสู่ระบบไม่จำเป็นต้องใช้อีกต่อไป:

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

ตัวอย่างเช่น:

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

ส่งคืน931668(เป็น KB) ซึ่งเกือบเป็น GB


5
ดูเหมือนว่าจะใช้งานไม่ได้กับ repos ส่วนตัว มีบางอย่างที่ฉันขาดหายไปหรือไม่? ขอบคุณ!
nroose

1
ฉันหวังว่าคุณจะขยายคำตอบของคุณมากขึ้นด้วยคำอธิบายบางอย่างเพื่อให้ผู้คนสามารถเปลี่ยนคำตอบได้ตามความต้องการ
Shimmy Weitzhandler

10

ในการทำเช่นนี้ด้วย curl (sudo apt-get curl) และ json pretty (sudo gem ติดตั้ง jsonpretty json):

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

แทนที่ YOURGITHUBUSERNAME ด้วยชื่อผู้ใช้ GitHub ของคุณ (ไปที่รูป)

แทนที่ OWNER ด้วยชื่อผู้ใช้ Git ของเจ้าของที่เก็บ แทนที่ REPOSITORY ด้วยชื่อที่เก็บ

หรือเป็นสคริปต์ Bash ที่ดี (วางในไฟล์ชื่อ 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

ใช้มันอย่างนั้น:

gitrepo-info larowlan pisi reel

นี่จะให้ข้อมูลฉันเกี่ยวกับพื้นที่เก็บข้อมูลpisi / reelบน GitHub


1

คุณต้องทำตาม GitHub API ดูเอกสารประกอบที่นี่สำหรับรายละเอียดทั้งหมดเกี่ยวกับที่เก็บของคุณ มันต้องการให้คุณส่งคำขอGETดังนี้:

GET / repos /: owner /: repository

คุณต้องแทนที่สองสิ่ง:

  1. : owner - ชื่อผู้ใช้ของบุคคลที่เป็นเจ้าของพื้นที่เก็บข้อมูล
  2. : repository - ชื่อของที่เก็บ

เช่นชื่อผู้ใช้ของฉันmaheshmnjและฉันเป็นเจ้าของที่เก็บflutter-ui-niceดังนั้น URL GET ของฉันจะเป็น:

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

เมื่อทำการร้องขอ GET คุณจะถูกน้ำท่วมด้วยข้อมูล JSON บางส่วนและอาจจะอยู่ที่บรรทัดที่ 78 คุณควรเห็นคีย์ที่มีชื่อขนาดซึ่งจะส่งคืนขนาดของพื้นที่เก็บข้อมูล

เคล็ดลับ: เมื่อทำงานกับ JSON ฉันขอแนะนำให้คุณเพิ่มปลั๊กอินที่จัดรูปแบบข้อมูล JSON เพื่อให้การอ่าน JSON ง่ายขึ้น ติดตั้งปลั๊กอิน


ตอบ) เนื่องจากมีการรายงานจำนวนมากขนาดนี้ไม่ถูกต้องและไม่น่าเชื่อถือ B) แม้ว่ามันจะเป็นบันทึกของคุณเกี่ยวกับการอ่าน JSON, หมายเลขบรรทัดและการจัดรูปแบบ ... ทั้งหมดไม่มีจุดหมาย JSON ไม่ได้มีไว้สำหรับมนุษย์ที่จะอ่านมันมีไว้สำหรับคอมพิวเตอร์ที่จะอ่าน คุณควรพูดถึงการอ่านsizeคีย์ในการตอบกลับไม่ใช่บรรทัด 78 ไม่ต้องพูดถึงตัวจัดรูปแบบที่แตกต่างกันจะมีตัวแบ่งบรรทัดที่แตกต่างกันในสถานที่ที่แตกต่างกันออกจากข้อมูลที่ต้องการที่หมายเลขบรรทัดอื่น
Jerry Dodge

@JerryDodge สิ่งแรกที่คุณควรอ่านคำตอบอย่างระมัดระวังฉันได้กล่าวถึง `` `คุณควรเห็นรหัสที่มีชื่อขนาด` `` และฉันบอกว่าคุณควรจะprobablyเห็นมันในบรรทัดที่ 78 ดังนั้นนั่นบ่งบอกว่าคุณควรเห็นกุญแจขนาดประมาณ 78 อย่างที่สองถ้าขนาดของ gitub apis ไม่ถูกต้องฉันไม่คิดว่าคุณจะพบอะไรที่แม่นยำกว่า apit github
maheshmnj

ฉันมีที่เก็บรูปภาพ รูปภาพเป็นข้อมูลไบนารี ไม่มีไฟล์ข้อความใน repo นี้เลย GitHub รายงานทุกที่ที่ใช้ 0 ไบต์ แม้แต่เว็บไซต์ / ปลั๊กอิน
Jerry Dodge

0

หากต้องการสรุป @larowlan, @VMTrooper และ @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

0

สำหรับพื้นที่เก็บข้อมูลส่วนตัวคุณจะต้องได้รับโทเค็นการเข้าถึงส่วนบุคคลจากhttps://github.com/settings/tokens https://github.com/settings/tokens

จากนั้นใช้คำสั่ง curl ต่อไปนี้เพื่อรับรายละเอียด (แทนค่าสำหรับ [โทเค็น], [เจ้าของ] และ [ชื่อ]):

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

ตามที่ระบุไว้ก่อนหน้านี้ขนาดอาจเป็น MB หรือ KB

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.