Como posso ver o tamanho de um repositório do GitHub antes de cloná-lo?

330

Existe uma maneira de ver o tamanho de um repositório Git no GitHub antes de decidir cloná-lo?

Parece uma estatística realmente óbvia / básica, mas não consigo encontrar como vê-la no GitHub.

jhabbott
fonte
4
@KennyTM pergunta muito semelhante, sim, mas isso é específico para o github e não para qualquer método que use apenas o protocolo git.
jhabbott
1
Para sua informação, confira esta extensão do Chrome, que adiciona automaticamente o tamanho do repositório ao resumo do repositório do GitHub, github.com/harshjv/github-repo-size . UPDATE: adicionou isso como resposta
Harsh Vakharia
Aqui está uma dica: Meu maior repositório absoluto contém apenas imagens de vários formatos, é um repositório de ícones de "obras de arte" que eu uso em vários aplicativos. No entanto, o GitHub reporta o tamanho como 0. Portanto, suponho que ele considere apenas o tamanho dos arquivos de origem conhecidos e não considere tipos de arquivos desconhecidos.
Jerry Dodge

Respostas:

276

Existe uma maneira de acessar essas informações através da API do GitHub .

Ao recuperar informações sobre um repositório, uma propriedade nomeada sizeé avaliada com o tamanho de todo o repositório (incluindo todo o seu histórico), em kilobytes.

Por exemplo, o repositório Git pesa cerca de 124 MB. A sizepropriedade da carga útil JSON retornada é avaliada 124283.

Atualizar

O tamanho é realmente expresso em kilobytes, com base no uso do disco do repositório bare do lado do servidor. No entanto, para evitar desperdiçar muito espaço com repositórios com uma rede grande, o GitHub conta com o Git Alternates . Nesta configuração, o cálculo do uso do disco no repositório vazio não leva em consideração o armazenamento de objetos compartilhados e, portanto, retorna um valor "incompleto" por meio da chamada da API.

Esta informação foi fornecida pelo suporte do GitHub.

nulltoken
fonte
12
Não é o tamanho em MB agora -> Não é tão claro, parece que depende do repositório que está sendo consultado ... Pequenos repositórios expõem o tamanho em bytes, grandes em megabytes. Abri um problema no suporte do GitHub. Atualizarei a resposta assim que o problema for encerrado.
Nulo14
6
Isso não parece funcionar para repositórios particulares. Estou esquecendo de algo? Obrigado!
Nrose
14
@nroose Try $ curl -u "{:username}" https://api.github.com/repos/{:organization}/{:repository}. Consulte developer.github.com/v3/#authentication
nulltoken
1
@ nulltoken Alguma resposta à pergunta sobre kB / MB etc?
Nealmcb 13/06/19
2
Apenas bifurcada um repo (09 de setembro de 2018) e é kB, não MB
Jacob Stamm
109

Se você é o proprietário do repositório, poderá encontrar o tamanho exato abrindo Configurações da contaRepositórios ( https://github.com/settings/repositories ), e o tamanho do repositório será exibido ao lado de sua designação.

Se você não possui o repositório, pode bifurcá-lo e depois verificar no mesmo local.

Um pouco hacky: use a download as a zip fileopção, leia o tamanho do arquivo indicado e cancele-o.

Não me lembro se o download como um zip já funcionou, mas, de qualquer forma, fazer isso agora apenas baixa o ramo selecionado no momento sem histórico.

CoatedMoose
fonte
Não se deve levar em consideração a compactação zip? O código fonte e os arquivos de texto podem ser compactados em até 60%, eu acho.
ffledgling
Não conheço uma maneira de verificar a taxa de compactação do zip sem concluir o download. Claro que você pode concluir o download e verificar a taxa de compactação. No entanto, nesse ponto, você também pode descompactar e verificar o tamanho do repositório diretamente. Realmente depende da precisão que você precisa ser. E se você puder fazer o download do repositório para verificar.
precisa saber é o seguinte
1
Não consegui encontrá-lo Settings > Repositories, mas encontrei o tamanho do repositório Account Settings > Repositoriesfora da sua home page do git. Obviamente, isso funciona apenas com repositórios que você possui (ou bifurca).
Modulitos
As configurações da conta das organizações não parecem mostrar o tamanho do repositório, portanto, somente se você possui um repositório como usuário e não como organização?
Bennett Brown
2
O tamanho do arquivo zip não indica o tamanho real do repositório: 1) inclui apenas uma captura instantânea do repositório em uma determinada revisão sem histórico e 2) os repositórios Git são armazenados como arquivos de pacote compactados, não duplicatas da loja etc.
kynan 8/15
74

Se você usa o navegador Google Chrome, pode instalar a extensão Tamanho do Repositório do GitHub .

insira a descrição da imagem aqui

Repo aqui: https://github.com/harshjv/github-repo-size

Grande onda
fonte
4
alguma porta do firefox?
Banee Ishaque K
2
@BaneeIshaqueK não é o mesmo, mas mostra o tamanho do
repositório
1
ATUALIZAÇÃO Agora, funciona perfeitamente mesmo em repositórios particulares, desde que você forneça o token do Github.
Siddhant Rimal
2
Ainda não confiável, ele usa a API do GitHub, que não informa o tamanho correto. Eu tenho um repositório com nada além de imagens (sem código), e a API relata o tamanho como 0, embora seja o maior repositório que tenho. Essa extensão nem me mostra o tamanho desse repositório específico (provavelmente porque vê 0).
Jerry Dodge
19

@larowlan ótimo código de exemplo. Com a nova API GitHub V3, a instrução curl precisa ser atualizada. Além disso, o login não é mais necessário:

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

Por exemplo:

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

retorna 931668(em KB), que é quase um GB.

VMTrooper
fonte
5
Isso não parece funcionar para repositórios particulares. Há algo que estou perdendo? Obrigado!
Nrose
1
Desejo que você expanda sua resposta mais com algumas explicações, para que as pessoas possam alterá-la de acordo com suas necessidades.
Shimmy Weitzhandler
10

Para fazer isso com curl (sudo apt-get curl) e json pretty (sudo gem install jsonpretty json):

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

Substitua YOURGITHUBUSERNAME pelo seu nome de usuário do GitHub (veja a figura).

Substitua OWNER pelo nome de usuário Git do proprietário do repositório. Substitua REPOSITORY pelo nome do repositório.

Ou como um bom script Bash (cole-o em um arquivo chamado 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

Use-o assim:

gitrepo-info larowlan pisi reel

Isso me dará informações sobre o repositório pisi / reel no GitHub.

larowlan
fonte
1

Você precisa seguir a API do GitHub. Veja a documentação aqui para todos os detalhes sobre seu repositório. Requer que você faça uma solicitação GET como:

GET / repos /: owner /: repository

Você precisa substituir duas coisas:

  1. : owner - o nome de usuário da pessoa que possui o repositório
  2. : repository - O nome do repositório

Por exemplo, meu nome de usuário maheshmnj e eu possuo um repositório, flutter-ui-nice , portanto minha URL GET será:

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

Ao fazer uma solicitação GET, você será inundado com alguns dados JSON e, provavelmente, na linha número 78, deverá ver uma chave chamada size que retornará o tamanho do repositório.

Dica: Ao trabalhar com JSON, sugiro que você adicione um plug-in que formate os dados JSON para facilitar a leitura do JSON. Instale o plugin .

maheshmnj
fonte
A) Como muitos relatam, esse tamanho não é preciso nem confiável. B) Mesmo assim, suas anotações sobre a leitura visual do JSON, o número da linha e a formatação ... tudo sem sentido. O JSON não se destina a humanos, mas sim a computadores. Você deve mencionar a leitura da sizechave na resposta, não a linha 78. Sem mencionar que diferentes formatadores terão quebras de linha diferentes em lugares diferentes, deixando os dados desejados em um número de linha diferente.
Jerry Dodge
@JerryDodge a primeira coisa que você deve ler com atenção a resposta que eu mencionei `` `` você deve ver uma chave chamada tamanho `` '' e eu disse que você deveria probablyvê-la na linha no 78, o que indica que você deveria ver a chave de tamanho em torno de 78 , segunda coisa: se o tamanho das APIs do github não for exato, acho que você não encontrará algo mais preciso do que as APIs do github.
maheshmnj 26/03
Eu tenho um repositório de imagens. Imagens são dados binários. Não há arquivos de texto neste repositório. O GitHub relata em todos os lugares que consome 0 bytes. Até o site / plugin.
Jerry Dodge
0

Para resumir as soluções @larowlan, @VMTrooper e @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
golem
fonte
0

Para um repositório privado, você precisará obter um token de acesso pessoal em https://github.com/settings/tokens .

Em seguida, use o seguinte comando curl para obter os detalhes (substituindo os valores por [token], [owner] e [name]):

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

Como mencionado anteriormente, o tamanho pode estar em MB ou KB.

Mike Godin
fonte