/ / ¿Por qué el tamaño de mi archivo de Github es el doble de la versión de Github? - git, github

¿Por qué el tamaño de mi archivo de Github es el doble de la versión de Github? - git, github

Cuál es la diferencia entre un archivo y una versión (carga de código).

Esta url:

¿Cuál es la diferencia? Algunas herramientas me dicen que puedo descargar una versión utilizando la API de github (código codificado), pero el tamaño no es el mismo para esos tar.gz.

El problema es que no puedo descargar la versión "pequeña" utilizando la API.

Respuestas

1 para la respuesta № 1

El archivo pequeño no contiene todo el conjunto de pruebas o sus accesorios. Eso es lo que ocupa la mayor parte del espacio.

$ du -sh __tests__
26M __tests__

Esto es porque los dos archivos grandes son más omenos empaquetar el repositorio en sí para su descarga, mientras que el paquete de lanzamiento es un artefacto construido que solo contiene el código de lanzamiento. Es producido por scripts / build-dist.sh. No contiene ninguna de las pruebas, porque no son necesarias en la distribución de la versión (ya probada).

Si desea obtener esto desde Github utilizando la API, algo como esto debería funcionar.

#!/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
))

Puedes leer más sobre esto en el Documentación API GitHub.

Supongo que puedes usar la API de datos de git para obtener el contenido completo del repositorio ... ¿pero es probablemente mucho más fácil usar el clon de git en ese momento?