从github下载tarball而不卷曲

err*_*per 6 linux shell curl wget github

我有一个嵌入式系统,我无法安装任何东西,我可能用来获取东西的唯一工具是wget.事实证明,你不能用curl做同样的事情.我也不能为这个系统交叉编译,所以我需要求助于Python或shell脚本.有一个名为Dulwich的git的纯Python实现实际上有一些我需要交叉编译的C代码......所以我甚至试图调查那个,仅供参考.

我需要的是从github存储库获取代码,显而易见的解决方案是使用它们提供的tarball.我通常会从存储库页面复制链接以下载zip按钮,并使用授权令牌而不是用户名和密码.它的工作非常简单,如下所示:

curl -L https://<token>@github.com/<org|user>/<repo>/archive/master.tar.gz | tar xz
Run Code Online (Sandbox Code Playgroud)

原来wget有点尴尬,无论我尝试过什么都行.

err*_*per 7

在wget标志的各种组合上击败我们之后涉及:

  • --post-data; 要么
  • --user=有没有--pasword=,反之亦然; 要么
  • --header="Authorization: token <token>"

我回顾了文档,发现版本API中有其他端点.看起来我首先不能在Authorization托管tarball的服务器上使用标头,其次curl(或github前端,基于代理字符串)似乎与<token>@github.comvs wget 做了不同的事情--user=<token>,并且它不是最令人愉快的事情.弄清楚.

这有用的是:

wget \
  --header='Authorization: token <token>' \
  https://api.github.com/repos/<org|user>/<repo>/tarball/<ref>
Run Code Online (Sandbox Code Playgroud)