Чи є спосіб дізнатися, наскільки великий Git сховище в GitHub, перш ніж ви вирішите його клонувати?
Це здається дійсно очевидною / базовою статистикою, але я не можу знайти, як це бачити на GitHub.
Чи є спосіб дізнатися, наскільки великий Git сховище в GitHub, перш ніж ви вирішите його клонувати?
Це здається дійсно очевидною / базовою статистикою, але я не можу знайти, як це бачити на GitHub.
Відповіді:
Існує спосіб отримати доступ до цієї інформації за допомогою API GitHub .
GET /repos/:user/:repo
Коли ви отримуєте інформацію про сховище, властивість з ім'ям size
оцінюється за розміром усього сховища (включаючи всю його історію) у кілобайтах.
Наприклад, сховище Git важить близько 124 Мб. size
Властивість повернутого JSON корисного навантаження переоцінений 124283
.
Розмір справді виражається в кілобайтах на основі використання диска голого сховища на сервері. Однак, щоб не витрачати занадто багато місця на сховища з великою мережею, GitHub покладається на Git Alternates . У цій конфігурації обчислення використання диска на голому сховищі не враховує спільне зберігання об'єктів і, таким чином, повертає "неповне" значення через виклик API.
Цю інформацію було надано службою підтримки GitHub.
$ curl -u "{:username}" https://api.github.com/repos/{:organization}/{:repository}
. Дивіться developer.github.com/v3/#authentication
Якщо у вас є сховище, ви можете знайти точний розмір, відкривши налаштування свого облікового запису → сховища ( https://github.com/settings/repositories ), а розмір сховища відобразиться поруч із його призначенням.
Якщо ви не є власником сховища, ви можете роздрібнити його, а потім перевірити його там же.
Дещо покірливий: скористайтеся download as a zip file
опцією, прочитайте вказаний розмір файлу та скасуйте його.
Я не пам’ятаю, якби завантаження як поштовий індекс працювало колись, але в будь-якому випадку, роблячи це, тепер завантажується лише вибрана гілка, яка не має історії.
Settings > Repositories
, але замість цього я знайшов розмір репо за Account Settings > Repositories
межами вашої домашньої сторінки git. Звичайно, це працює лише з репостами, якими ви володієте (або вилами).
Якщо ви використовуєте браузер Google Chrome, ви можете встановити розширення розміру репозиторію GitHub .
@larowlan чудовий зразок коду. З новим GitHub API V3 заяву про згортання потрібно оновити. Також вхід більше не потрібно:
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
(у КБ), що становить майже ГБ.
Для цього потрібно зробити curl (sudo apt-get curl) та json досить (sudo gem install jsonpretty json):
curl -u "YOURGITHUBUSERNAME" http://github.com/api/v2/json/repos/show/OWNER/REPOSITORY |
jsonpretty
Замініть YOURGITHUBUSERNAME своїм іменем GitHub (перейдіть на рисунок).
Замініть ВЛАСНИКА на ім'я користувача 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.
Вам потрібно дотримуватися API GitHub. Дивіться документацію тут, щоб отримати детальну інформацію про ваше сховище. Він вимагає зробити запит GET як:
GET / repos /: власник /: сховище
Вам потрібно замінити дві речі:
Наприклад, моє ім’я користувача maheshmnj , і я володію сховищем, flutter-ui-nice , тому моя GET URL буде такою:
https://api.github.com/repos/maheshmnj/flutter-ui-nice
Здійснюючи GET-запит, вам будуть залиті деякі дані JSON, і, ймовірно, на рядку номер 78 ви побачите ключ, названий розміром, який поверне розмір сховища.
Порада: Під час роботи з JSON я пропоную вам додати плагін, який форматує дані JSON, щоб полегшити читання JSON. Встановіть плагін .
size
ключ у відповіді, а не рядок 78. Не кажучи вже про те, що різні форматники матимуть різні розриви рядків у різних місцях, залишаючи потрібні дані під іншим номером рядка.
probably
бачити його в рядку № 78, так що це означає, що ви повинні бачити клавішу розміру десь біля 78 По-друге, якщо розмір від github apis не був точним, я не думаю, що ви знайдете щось більш точне, ніж github apis.
Підсумовуючи рішення @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
Для приватного сховища вам потрібно буде отримати маркер особистого доступу з https://github.com/settings/tokens .
Потім використовуйте таку команду curl, щоб отримати деталі (замінивши значення для [токен], [власник] та [ім'я]):
curl -u git:[token] https://api.github.com/repos/[owner]/[name] 2> /dev/null | grep size
Як було сказано раніше, розмір може бути в МБ або КБ.