Làm cách nào tôi có thể thấy kích thước của kho lưu trữ GitHub trước khi nhân bản nó?


330

Có cách nào để xem kho lưu trữ Git lớn như thế nào trên GitHub trước khi bạn quyết định sao chép nó không?

Đây có vẻ như là một thống kê thực sự rõ ràng / cơ bản, nhưng tôi không thể tìm thấy cách nào để xem nó trên GitHub.



4
@KennyTM câu hỏi rất giống nhau, vâng, nhưng điều này là dành riêng cho github chứ không phải bất kỳ phương thức nào chỉ sử dụng giao thức git.
jhabbott

1
FYI, hãy xem tiện ích mở rộng chrome này tự động thêm kích thước kho lưu trữ vào tóm tắt kho lưu trữ của GitHub github.com/harshjv/github-repo-size . CẬP NHẬT: thêm điều này như một câu trả lời
Harsh Vakharia

Đây là một gợi ý: Kho lưu trữ lớn nhất tuyệt đối của tôi chỉ chứa các hình ảnh có định dạng khác nhau, đó là một kho lưu trữ "tác phẩm nghệ thuật" của các biểu tượng mà tôi sử dụng trong các ứng dụng khác nhau. Tuy nhiên, GitHub báo cáo kích thước là 0. Vì vậy, tôi cho rằng nó chỉ xem xét kích thước của các tệp nguồn đã biết và không xem xét các loại tệp không xác định.
Jerry Dodge

Câu trả lời:


276

Có một cách để truy cập thông tin này thông qua API GitHub .

Khi lấy thông tin về một kho lưu trữ, một thuộc tính có tên sizeđược định giá bằng kích thước của toàn bộ kho lưu trữ (bao gồm tất cả lịch sử của nó), tính bằng kilobyte.

Chẳng hạn, kho lưu trữ Git có trọng lượng khoảng 124 MB. Các sizetài sản của JSON tải trọng trở có giá trị đến 124283.

Cập nhật

Kích thước thực sự được biểu thị bằng kilobyte dựa trên mức độ sử dụng đĩa của kho lưu trữ phía máy chủ. Tuy nhiên, để tránh lãng phí quá nhiều không gian với kho lưu trữ với mạng lớn, GitHub dựa vào Git Alternates . Trong cấu hình này, việc tính toán mức sử dụng đĩa đối với kho lưu trữ trống không chiếm tài khoản cho kho lưu trữ đối tượng được chia sẻ và do đó trả về giá trị "không đầy đủ" thông qua lệnh gọi API.

Thông tin này đã được hỗ trợ bởi GitHub.


12
Hiện tại không phải là kích thước tính bằng MB -> Không rõ ràng lắm, có vẻ như nó phụ thuộc vào repo được truy vấn ... Các repos nhỏ lộ kích thước tính bằng byte, lớn trong megabyte. Tôi đã mở một vấn đề tại bộ phận hỗ trợ của GitHub. Tôi sẽ cập nhật câu trả lời ngay khi vấn đề được đóng lại.
nulltoken

6
Điều này dường như không làm việc cho repos tư nhân. Tui bỏ lỡ điều gì vậy? Cảm ơn!
nroose

14
@nroose Hãy thử $ curl -u "{:username}" https://api.github.com/repos/{:organization}/{:repository}. Xem developer.github.com/v3/#authentication
nulltoken

1
@nulltoken Có phản hồi nào về truy vấn về kB / MB không?
nealmcb

2
Chỉ cần rẽ nhánh một repo (ngày 9 tháng 9 năm 2018) và đó là kB, không phải MB
Jacob Stamm

109

Nếu bạn sở hữu kho lưu trữ, bạn có thể tìm thấy kích thước chính xác bằng cách mở Cài đặt tài khoảnKho lưu trữ ( https://github.com/sinstall/reposeocate ) và kích thước kho lưu trữ được hiển thị bên cạnh chỉ định của nó.

Nếu bạn không sở hữu kho lưu trữ, bạn có thể phân nhánh nó và sau đó kiểm tra tại cùng một nơi.

Hơi khó tin: sử dụng download as a zip filetùy chọn, đọc kích thước tệp được chỉ định và sau đó hủy bỏ.

Tôi không nhớ nếu tải xuống dưới dạng zip đã từng hoạt động, nhưng trong mọi trường hợp, làm như vậy bây giờ chỉ tải xuống chi nhánh hiện được chọn không có lịch sử.


Không nên tính đến nén zip? Tôi nghĩ mã nguồn và tệp văn bản có thể được nén tối đa khoảng 60%.
ffledgling

Tôi không biết cách kiểm tra tỷ lệ nén của zip mà không hoàn thành tải xuống. Tất nhiên bạn có thể hoàn thành việc tải xuống và sau đó kiểm tra tỷ lệ nén. Tuy nhiên, tại thời điểm đó, bạn cũng có thể giải nén và kiểm tra kích thước repo trực tiếp. Nó thực sự phụ thuộc vào mức độ chính xác mà bạn cần phải có. Và nếu bạn có đủ khả năng để tải về repo để kiểm tra.
CoatedMoose

1
Tôi không thể tìm thấy nó trong Settings > Repositories, nhưng thay vào đó tìm thấy kích thước repo bên dưới Account Settings > Repositoriestrang chủ git của bạn. Tất nhiên, điều này chỉ hoạt động với repos mà bạn sở hữu (hoặc ngã ba).
modulitos

Cài đặt tài khoản của các tổ chức dường như không hiển thị kích thước repo, vì vậy chỉ khi bạn sở hữu repo với tư cách là người dùng chứ không phải là một tổ chức?
Bennett Brown

2
Kích thước của tệp zip không có dấu hiệu nào ở tất cả kích thước kho lưu trữ thực tế: 1) nó chỉ bao gồm một ảnh chụp nhanh của kho lưu trữ tại một phiên bản nhất định không có lịch sử và 2) Kho lưu trữ Git được lưu trữ dưới dạng tệp gói được nén, không lưu trữ các bản sao, vv
kynan

74

Nếu bạn sử dụng trình duyệt Google Chrome, bạn có thể cài đặt tiện ích mở rộng Kích thước kho lưu trữ GitHub .

nhập mô tả hình ảnh ở đây

Repo tại đây: https://github.com/harshjv/github-repo-size


4
cổng firefox nào?
Banee Ishaque K

2
@BaneeIshaqueK nó không giống nhau nhưng nó cho bạn thấy kích thước repo kiểm tra nó ở đây
Syed Shamikh Shabbir

1
CẬP NHẬT Bây giờ, hoạt động hoàn hảo ngay cả trong kho riêng tư miễn là bạn cung cấp mã thông báo Github.
Tối thiểu Siddhant

2
Vẫn không đáng tin cậy, nó sử dụng API GitHub, không báo cáo kích thước chính xác. Tôi có một kho lưu trữ không có gì ngoài hình ảnh (không có mã) và API báo cáo kích thước là 0, mặc dù đó là kho lớn nhất mà tôi có. Tiện ích mở rộng này thậm chí không hiển thị cho tôi kích thước của repo cụ thể này (có thể vì nó thấy 0).
Jerry Dodge

19

@larowlan mã mẫu tuyệt vời. Với GitHub API V3 mới, câu lệnh curl cần được cập nhật. Ngoài ra, đăng nhập không còn cần thiết:

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

Ví dụ:

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

trả về 931668(tính bằng KB), gần bằng GB.


5
Điều này dường như không làm việc cho repos tư nhân. Có cái gì tôi đang thiếu? Cảm ơn!
nroose

1
Tôi muốn bạn mở rộng câu trả lời của mình nhiều hơn với một số giải thích, để mọi người có thể thay đổi nó cho phù hợp với nhu cầu của họ.
Shimmy Weitzhandler

10

Để làm điều này với curl (sudo apt-get curl) và json beautiful (sudo gem install jsonpretty json):

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

Thay thế YOUGITHUBUSERNAME bằng tên người dùng GitHub của bạn (xem hình).

Thay thế OWNER bằng tên người dùng Git của chủ sở hữu kho lưu trữ. Thay thế REPOSITORY bằng tên kho lưu trữ.

Hoặc như một tập lệnh Bash đẹp (dán tập tin này vào một tệp có tên gitrepo-thông tin):

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

Sử dụng nó như vậy:

gitrepo-info larowlan pisi reel

Điều này sẽ cung cấp cho tôi thông tin về kho lưu trữ pisi / reel trên GitHub.


1

Bạn cần tuân theo API GitHub. Xem tài liệu ở đây để biết tất cả các chi tiết liên quan đến kho lưu trữ của bạn. Nó yêu cầu bạn thực hiện một yêu cầu NHẬN như:

GET / repos /: chủ sở hữu /: kho lưu trữ

Bạn cần thay thế hai điều:

  1. : chủ sở hữu - tên người dùng của người sở hữu kho lưu trữ
  2. : repository - Tên của kho lưu trữ

Ví dụ: tên người dùng của tôi maheshmnj và tôi sở hữu một kho lưu trữ, flutter-ui- beautiful , vì vậy URL GET của tôi sẽ là:

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

Khi thực hiện một yêu cầu GET, bạn sẽ tràn ngập một số dữ liệu JSON và có thể trên dòng số 78, bạn sẽ thấy một khóa có tên là kích thước sẽ trả về kích thước của kho lưu trữ.

Mẹo: Khi làm việc với JSON, tôi khuyên bạn nên thêm một plugin định dạng dữ liệu JSON để giúp đọc JSON dễ dàng. Cài đặt plugin .


A) Như nhiều người đang báo cáo, kích thước này không chính xác và không đáng tin cậy. B) Ngay cả khi đó là (các) ghi chú của bạn về việc đọc trực quan JSON, số dòng và định dạng ... tất cả đều vô nghĩa. JSON không có nghĩa là cho con người đọc, nó có nghĩa là cho máy tính đọc. Bạn nên đề cập để đọc sizekhóa trong phản hồi, không phải dòng 78. Chưa kể, các trình định dạng khác nhau sẽ có các ngắt dòng khác nhau ở những nơi khác nhau, để lại dữ liệu mong muốn ở một số dòng khác nhau.
Jerry Dodge

@JerryDodge điều đầu tiên bạn nên đọc kỹ câu trả lời tôi đã đề cập `` `bạn sẽ thấy một khóa có tên là kích thước` `` và tôi đã nói rằng bạn sẽ probablythấy nó trên dòng số 78, vì vậy điều đó cho thấy bạn sẽ thấy khóa kích thước ở đâu đó khoảng 78 , điều thứ hai nếu kích thước từ github apis không chính xác, tôi không nghĩ bạn sẽ tìm thấy thứ gì đó chính xác hơn github apis.
maheshmnj

Tôi có một kho hình ảnh. Hình ảnh là dữ liệu nhị phân. Không có tập tin văn bản trong repo này cả. GitHub báo cáo ở mọi nơi rằng nó tiêu thụ 0 byte. Ngay cả trang web / plugin.
Jerry Dodge

0

Để tóm tắt các giải pháp @larowlan, @VMTrooper và @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

Đối với kho lưu trữ riêng tư, bạn sẽ cần nhận Mã thông báo truy cập cá nhân từ https://github.com/sinstall/tokens .

Sau đó, sử dụng lệnh curl sau để lấy chi tiết (thay thế bằng các giá trị cho [mã thông báo], [chủ sở hữu] và [tên]):

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

Như đã đề cập trước đó, kích thước có thể bằng MB hoặc KB.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.