GitHub Api скачать zip или тарбол ссылку - PullRequest
55 голосов
/ 04 декабря 2011

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

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

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

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

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

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

Ответы [ 2 ]

96 голосов
/ 05 декабря 2011

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

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' изрепо пользователя 'репо' пользователя.

Обновленный 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, получив полный архив.
Он создаст каталог послесоглашение об именах, описанное в вопросе, который вы упомянули .

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


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

Редактировать 2016-08-25 - Пример оболочки с Wget, Переменные и 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 в тот же каталог, что искрипт.


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

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

curl -L https://api.github.com/repos/octokit/octokit.rb/tarball | tar xz --strip=1 
23 голосов
/ 08 мая 2014

Синтаксис описан в документах :

GET /repos/:owner/:repo/:archive_format/:ref

URL-адрес следующего примера будет указывать (через перенаправление 302 ) на zip-архив master в hadley / devtools repo:

https://api.github.com/repos/hadley/devtools/zipball/master

(Другой вариант для archive_format - tarball.)

Понятия не имею с каких пор этот API доступен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...