为什么我的Github存档的大小是Github发布的两倍?

时间:2017-09-05 14:02:23

标签: git github

存档和发布(代码加载)之间有什么区别。

此网址:

有什么区别?有些工具告诉我,我可以使用github API下载一个版本(代码加载东西),但那些tar.gz的大小不一样了吗?

问题是我无法使用API​​下载'小'版本。

1 个答案:

答案 0 :(得分:1)

小文件不包含整个测试套件或其固定装置。这就占据了大部分空间。

$ du -sh __tests__
26M __tests__

这是因为两个大文件或多或少地打包了存储库本身以供下载,而发行包是一个仅包含发布代码的构建工件。它由scripts/build-dist.sh生成。它不包含任何测试,因为(已经测试过的)版本分发中不需要这些测试。

如果你想使用API​​从Github获取它,这样的东西应该可以工作。

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

您可以在GitHub API documentation

中详细了解相关信息

我想你可以使用git数据API来获取repo的全部内容......但是在那时使用git clone可能要容易多了?