GitHub Api скачать zip или tarball ссылку

Здесь была хорошая ссылка о том, как создается строка zip/tarball

Когда я загружаю zip из github, что представляет собой шестнадцатеричная строка в конце имени файла?

Но я смотрю GitHub APIv3, и мне было любопытно, если я что-то упустил.

  • Есть ли способ получить ссылку zip/tarball через вызов API?

  • Если нет, можно ли построить эту строку без использования двоичного файла или библиотеки git? Смысл, могу ли я использовать различные вызовы API, чтобы вытащить эти данные и собрать их по URL-адресу, который мне нужен?

Я знаю, что второй вопрос немного необоснован для stackoverflow, и для меня это немного забавный проект, поэтому я предпочел бы на второй вопрос, если бы вы просто подтолкнули меня в правильном направлении, а не бросали фрагмент кода. Или просто сказал мне, если это возможно.

Ответ 1

Вы можете wget выйти из репо GitHub, чтобы получить tar файл (archive):

wget --no-check-certificate https://github.com/User/repo/archive/master.tar.gz

# better, if the certificate authorities are present:
wget https://github.com/User/repo/archive/master.tar.gz

вы получите файл с именем "master" из пользовательского репо "repo".

обновленный URL-адрес API V3:

https://api.github.com/repos/User/repo/:archive_format/:ref
#
# two possibilities for fomat:
https://api.github.com/repos/User/repo/tarball/master
https://api.github.com/repos/User/repo/zipball/master

# from github example:
$curl -L https://api.github.com/repos/octokit/octokit.rb/tarball > octokit.tar.gz

Затем вы можете tar xpvf master получить полный архив.
Он создаст каталог, следующий за именованием, описанным в вопросе который вы упомянули.

Нет необходимости в git для получения архива из GitHub, благодаря службе загрузки "Nodeload" .


ligemer предложил в редактировании следующий пример:

Изменить 2016-08-25 - Пример оболочки с помощью Wget, Variables и Untar:

#!/bin/bash -ex

# arguments:
# token = $1
# organization = $2
# repo name = $3
# branch = $4

wget --header="Authorization: token ${1}" --header="Accept:application/vnd.github.v3.raw" -O - https://api.github.com/repos/${2}/${3}/tarball/${4} | tar xz

Вызов через:

$ scriptName.sh token my-organization site.com master

Выше команда загрузит и распакует папку Github в тот же каталог, что и script.


Diogo Quintela предлагает в комментариях:

Следующий пример позволяет загружать, извлекать и вырезать каталог верхнего уровня

curl -L https://api.github.com/repos/octokit/octokit.rb/tarball | tar xz --strip=1