You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何无需下载完整.tar.gz包获取GitHub项目归档的SHA512哈希值

无需完整下载GitHub归档获取vcpkg所需SHA512哈希的方法

背景场景

更新vcpkg自定义覆盖注册表的端口时,portfile.cmake里的vcpkg_from_github函数要求提供GitHub项目归档的SHA512哈希值,示例代码如下:

vcpkg_from_github(
    OUT_SOURCE_PATH SOURCE_PATH
    REPO dennisferron/antlr4-testrig-runner
    
    REF 4c0f384236c8b555b3b3a156a91af7cd43d695dc
    
    SHA512 aad0471dcd8aa947a894a1536be28b9aa801fea3f4ef0a3e635f9329756dca9ef4cf34b1c1a167b604400849c3b31a3bc87561b7ee89e0f9b6dc82b50857a5dc
    
    HEAD_REF main
)

当前常用方法是先下载归档压缩包,再用vcpkg hash计算:

wget https://github.com/dennisferron/antlr4-testrig-runner/archive/4c0f384236c8b555b3b3a156a91af7cd43d695dc.tar.gz
# 下载完成后执行
vcpkg hash 4c0f384236c8b555b3b3a156a91af7cd43d695dc.tar.gz

但该方法存在两个问题:一是下载归档仅为计算哈希后删除,造成资源浪费;二是Windows默认无wget,依赖额外工具不够便捷。


可行解决方案

1. 利用本地仓库生成匹配GitHub格式的归档并计算哈希

如果本地已克隆目标仓库,可直接生成与GitHub完全一致的归档包再计算哈希:

  • 切换到本地仓库目录,checkout到目标REF对应的提交:
    git checkout 4c0f384236c8b555b3b3a156a91af7cd43d695dc
    
  • 生成符合GitHub规范的tar包(GitHub归档会将仓库内容放在仓库名-提交哈希目录下):
    git archive --format=tar --prefix=antlr4-testrig-runner-4c0f384236c8b555b3b3a156a91af7cd43d695dc/ HEAD | gzip > 4c0f384236c8b555b3b3a156a91af7cd43d695dc.tar.gz
    
  • 用vcpkg hash计算SHA512:
    vcpkg hash 4c0f384236c8b555b3b3a156a91af7cd43d695dc.tar.gz
    

该方法无需联网,也不依赖额外下载工具。

2. 使用vcpkg自带命令直接计算(无需手动下载)

vcpkg的hash命令支持直接传入URL,会自动下载、计算哈希并清理临时文件,无需手动处理压缩包:

vcpkg hash https://github.com/dennisferron/antlr4-testrig-runner/archive/4c0f384236c8b555b3b3a156a91af7cd43d695dc.tar.gz --sha512

此命令在Windows下可直接运行,不依赖wget,且自动避免资源浪费。

3. 通过GitHub API获取归档哈希(需注意API限制)

GitHub REST API可获取特定提交的归档信息,但未认证用户每小时仅能调用60次:

  • 发送GET请求到对应提交的API地址,响应中的tree.sha为提交树哈希,但并非归档的SHA512。需结合git archive逻辑或第三方工具处理,可靠性不如前两种方法。

内容的提问来源于stack exchange,提问作者Dennis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 02:57:23