【问题标题】:How does Github releases generate archive filenames?Github 版本如何生成归档文件名?
【发布时间】:2013-12-25 16:25:23
【问题描述】:

我刚刚在 github 上为我的 NFQL 软件创建了版本。
这是发布页面:https://github.com/vbajpai/nfql/releases

对于最新版本,v0.7。如果我单击 tarball 按钮,它会保存一个 nfql-0.7.tar.gz。这太棒了,这正是我希望我的发布档案被命名的方式。

但是,我需要 tarball 本身的下载链接。这样我就可以为 tarball 创建一个 MacPorts/Homebrew 文件。如果我查看下载链接,它是:

a) https://github.com/vbajpai/nfql/archive/v0.7.tar.gz
b) https://codeload.github.com/vbajpai/nfql/tar.gz/v0.7

现在,如果我使用 curl/wget,它会将 tarball 保存为 v0.7.tar.gz。我知道我可以在使用curl/wget 下载时指定文件名。我想知道是否有一个可靠的 github URL 可以用来获取我的 tarball 为nfql-0.7.tar.gz

PS: github 到底在做什么?直接点击源码链接,浏览器怎么修改文件名?

【问题讨论】:

    标签: git curl github


    【解决方案1】:

    第一个链接重定向到第二个:

    curl --head https://github.com/vbajpai/nfql/archive/v0.7.tar.gz
    HTTP/1.1 302 Found
    Location: https://codeload.github.com/vbajpai/nfql/tar.gz/v0.7
    ...
    

    当我直接点击时,浏览器如何更改文件名 源码链接?

    文件名是通过自定义的Content-Disposition HTTP 标头定义的:

    curl --head https://codeload.github.com/vbajpai/nfql/tar.gz/v0.7
    HTTP/1.1 200 OK
    Content-Disposition: attachment; filename=nfql-0.7.tar.gz
    ...
    

    因此您可以使用curl-O, --remote-name-L, --location-J, --remote-header-name 来(分别)将输出写入名为远程文件的文件,遵循重定向并使用标头提供的文件名:

    curl -LOJ https://github.com/vbajpai/nfql/archive/v0.7.tar.gz
    

    【讨论】:

      【解决方案2】:

      不确定最初发布问题时这是否有效,但现在您可以使用https://github.com/vbajpai/nfql/archive/v0.7/nfql-0.7.tar.gz 直接获取正确的文件名,而无需查看标题。这在使用 wget 时非常好,因为您不需要标志,只需 wget https://github.com/vbajpai/nfql/archive/v0.7/nfql-0.7.tar.gz

      请注意,它是选择要使用的版本的倒数第二个路径组件 - 您可以将任何您想要的文件名作为最后一个路径组件。

      【讨论】:

      • 这很棒。我确定这已记录在某处,但我找不到。谢谢!
      • 这似乎并不总是有效。例如这个没有:https://github.com/FreePBX/restart/archive/v13.0.7/restart-13.0.7.tar.gz 但我还没有弄清楚它有什么不同。玩了一下,我得到了这个工作:https://github.com/FreePBX/restart/archive/release/13.0.7/restart-release-13.0.7.tar.gz
      • @miken32 当然可以。再次阅读我答案的最后一段。在 nfql 示例中,“要使用的版本”是 v0.7,而在您的示例中,“要使用的版本”是 release/13.0.7 - 区别仅在于项目使用的标记方案。
      猜你喜欢
      • 2016-06-18
      • 1970-01-01
      • 1970-01-01
      • 2010-12-05
      • 1970-01-01
      • 1970-01-01
      • 2019-06-11
      • 1970-01-01
      • 2015-06-22
      相关资源
      最近更新 更多