Есть ли способ узнать, насколько большой Git-репозиторий на GitHub, прежде чем вы решите его клонировать?
Это похоже на действительно очевидную / основную статистику, но я не могу найти, как ее увидеть на GitHub.
Есть ли способ узнать, насколько большой Git-репозиторий на GitHub, прежде чем вы решите его клонировать?
Это похоже на действительно очевидную / основную статистику, но я не могу найти, как ее увидеть на GitHub.
Ответы:
Есть способ получить доступ к этой информации через GitHub API .
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
опцию, прочитайте указанный размер файла и затем отмените его.
Я не помню, работала ли когда-либо загрузка в формате zip, но в любом случае, теперь она загружает только выбранную ветку без истории.
Settings > Repositories
, но вместо этого нашел размер репо под Account Settings > Repositories
вашей домашней страницей git. Конечно, это работает только с репо, которые у вас есть (или форк).
Если вы используете браузер Google Chrome, вы можете установить расширение GitHub Repository Size .
Репо здесь: https://github.com/harshjv/github-repo-size
@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
(в КБ), что почти в ГБ.
Чтобы сделать это с помощью 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 (см. Рисунок).
Замените ВЛАДЕЛЬЦА на имя пользователя Git владельца хранилища. Замените хранилище именем хранилища.
Или как хороший скрипт 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.
Вы должны следовать GitHub API. Смотрите документацию здесь для всех деталей, касающихся вашего хранилища. Это требует от вас сделать запрос GET как:
GET / repos /: owner /: хранилище
Вам необходимо заменить две вещи:
Например, мое имя пользователя maheshmnj , и у меня есть хранилище, flutter-ui-nice , поэтому мой GET URL будет:
https://api.github.com/repos/maheshmnj/flutter-ui-nice
При выполнении запроса GET вы будете заполнены некоторыми данными JSON, и, вероятно, в строке номер 78 вы увидите ключ с именем size , который вернет размер хранилища.
Совет: При работе с 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, чтобы получить подробности (подставляя значения в [token], [owner] и [name]):
curl -u git:[token] https://api.github.com/repos/[owner]/[name] 2> /dev/null | grep size
Как упоминалось ранее, размер может быть в МБ или КБ.