/ / Dlaczego rozmiar mojego archiwum Github jest dwukrotnie większy od wydania Github? - git, github

Dlaczego rozmiar mojego archiwum Github jest dwukrotnie większy od wydania Github? - git, github

Jaka jest różnica między archiwum a wydaniem (codeload).

Ten adres URL:

Jaka jest różnica? Niektóre narzędzia podpowiadają mi, że mogę pobrać wydanie za pomocą interfejsu API Github (rzeczy typu codeload), ale rozmiar nie jest taki sam dla tych tar.gz?

Problem polega na tym, że nie mogę pobrać "małej" wersji za pomocą interfejsu API.

Odpowiedzi:

1 dla odpowiedzi № 1

Mały plik nie zawiera całego zestawu testów ani jego urządzeń. To właśnie zajmuje większą część przestrzeni.

$ du -sh __tests__
26M __tests__

To dlatego, że dwa duże pliki są większe lubmniej pakuje się do repozytorium w celu pobrania, a pakiet wydania to zbudowany artefakt zawierający tylko kod zwolnienia. Jest produkowany przez scripts / build-dist.sh. Nie zawiera żadnego z testów, ponieważ nie są one potrzebne w (już przetestowanej) dystrybucji wydania.

Jeśli chcesz pobrać to z Github za pomocą interfejsu API, coś takiego powinno działać.

#!/usr/bin/env python3

import json
import requests
import shutil

headers = {"Accept": "application/vnd.github.v3+json"}

author_name = "yarnpkg"
repo_name = "yarn"
tag_name = "v0.23.4"

download_path = "/tmp/{}-{}.tar.gz".format(repo_name, tag_name)

# To get latest release, sub in this URL instead:
# /repos/:owner/:repo/releases/latest
r = requests.get(
"https://api.github.com/repos/{}/{}/releases/tags/{}".format(
author_name,
repo_name,
tag_name,
),
headers=headers)

if r.status_code == 200:
json_response = r.json()
for asset in json_response["assets"]:
if asset["name"] == "{}-{}.tar.gz".format(repo_name, tag_name):
download_url = asset["browser_download_url"]
print("Downloading to {}".format(download_path))
r2 = requests.get(download_url, stream=True)
with open(download_path, "wb") as out_file:
shutil.copyfileobj(r2.raw, out_file)
print("Download complete.")
else:
print("ERROR: GitHub response code {} unexpected.".format(
r.status_code
))

Możesz przeczytać więcej na ten temat w Dokumentacja API GitHub.

Sądzę, że możesz użyć interfejsu API danych git, aby uzyskać pełną zawartość repo ... ale prawdopodobnie łatwiej będzie po prostu użyć klonu git w tym momencie?