Посмотрите размер репозитория github до его клонирования?

Есть ли способ увидеть, насколько большой репозиторий git находится на github, прежде чем вы решите клонировать его? Это кажется действительно очевидной/базовой статистикой, но я не могу найти, как это увидеть на github вообще.

Ответ 1

Есть способ получить доступ к этой информации через GitHub API.

При извлечении информации о хранилище свойство с именем size оценивается размером всего хранилища (включая всю его историю) в килобайтах.

Например, репозиторий Git весит около 124 МБ. Свойство size возвращенной полезной нагрузки JSON оценивается как 124283.

Обновление

Размер действительно выражается в килобайтах в зависимости от использования диска в серверном "голом" хранилище. Однако, чтобы не тратить слишком много места на репозитории с большой сетью, GitHub использует Git Alternates. В этой конфигурации при расчете использования диска с использованием пустого хранилища не учитывается хранилище общих объектов, и, таким образом, возвращается "неполное" значение посредством вызова API.

Эта информация была предоставлена поддержкой GitHub.

Ответ 2

Если вы являетесь владельцем репо, вы можете узнать точный размер, открыв Account Settings > Repositories (https://github.com/settings/repositories), и размер репо отобразится рядом с его обозначением.

Если вы не являетесь владельцем репозитория, вы можете его разветкить, а затем проверить в том же месте.

Несколько странно: используйте опцию download as a zip file, прочитайте указанный размер файла и затем отмените его.

Я не помню, работала ли когда-либо загрузка в формате zip, но в любом случае сейчас загружает только выбранную в данный момент ветку без истории.

Ответ 4

@larowlan отличный образец кода. С новым API-интерфейсом GitHub V3 необходимо обновить инструкцию curl. Кроме того, вход в систему больше не требуется:

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

Ответ 5

Чтобы сделать это с помощью curl (sudo apt-get curl) и json pretty (sudo gem install jsonpretty json)

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

замените YOURGITHUBUSERNAME своим именем пользователя git hub (go figure). замените OWNER владельцем репо git имя пользователя замените REPO на имя репо.

Или как приятный bash script (вставьте его в файл с именем 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.

Ответ 6

Подводя итоги решениям @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

Ответ 7

вам нужно следовать API GitHub, см. документацию здесь для получения подробной информации о вашем хранилище. это требует, чтобы вы сделали запрос на получение как

GET/repos/: owner/: repo

вам нужно заменить две вещи

  1. : owner - имя пользователя, которому принадлежит репо
  2. : repo - имя хранилища

например, мое имя пользователя maheshmnj, у меня есть хранилище flutter-ui-nice поэтому мой URL-адрес будет

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

при выполнении запроса get вы будете заполнены некоторыми данными json и, вероятно, в строке № 78 вы увидите ключ с именем size, который вернет размер хранилища.

Совет: При работе с Json я предлагаю вам добавить плагин, который форматирует данные Json, чтобы упростить чтение json. установить плагин