Есть ли способ программно получить zipball из частного репозитория github? - PullRequest
27 голосов
/ 29 февраля 2012

У нас возникла необходимость получить zipball частного репо. Для общедоступных это довольно просто, либо через GitHub API, либо вручную (https://github.com/user/repo/zipball/master). Но как насчет частных репозиториев? Не совсем очевидно, как это сделать, даже используя токен oAuth.

Ответы [ 5 ]

34 голосов
/ 22 мая 2014

Новая альтернатива

Поскольку данный принятый ответ больше не работает, я подумал, что объясню, как я смог это сделать с новыми изменениями в github API.

Новая ссылка для скачивания Api

Сначала я нашел информацию о загрузке архива здесь: https://developer.github.com/v3/repos/contents/#get-archive-link

Публичный репо

Если это публичное репо, то это очень просто ... вы можете сделать:

curl -L https://api.github.com/repos/pengwynn/octokit/tarball > octokit.tar.gz

Частный репо

Если этоДля частного репозитория вам необходимо создать токен oAuth, перейдя в свои настройки и выбрав «Настройки разработчика» / « Личные токены доступа ».Я создал личный токен.

Затем, используя инструкции на следующей странице, я узнал, как получить личное репо, на которое у вас есть разрешение: https://developer.github.com/v3/#authentication

Полный код

curl -H "Authorization: token ab499f3b..." \
-L https://api.github.com/repos/godzilla/my_priv_repo/tarball > wut.tar.gz

Обязательно замените ab499f3b... на свой фактический токен.

2 голосов
/ 12 февраля 2015

Я столкнулся с той же проблемой, и она работала для меня (по состоянию на февраль 2015 года):

curl -O -J -L -u $YOUROAUTHKEY:x-oauth-basic https://github.com/$USER/$REPO/archive/master.zip

Решения oAuth в качестве заголовка не работали для меня, но то, что работало, это вставляло ключ вимя пользователя и указание типа.Затем он дал 302 для перенаправления с соответствующей ссылкой.

Подробная команда действительно помогла мне выяснить, принимались ли учетные данные, которые я использовал, или нет (404 против 401)

2 голосов
/ 08 марта 2012

Редактировать: Это больше не работает.


с CURL:

curl -L -F "login=$USER" -F "token=$TOKEN" https://github.com/$USER/$REPO/$PKGTYPE/$BRANCHorTAG

, где $TOKEN - токен API в вашем профиле github,не токен oAuth2, используемый для связи с APIv3.

$USER - это учетная запись пользователя, с которой связан токен, не обязательно организация / другой пользователь, к которому принадлежит репо.Второй экземпляр $USER - это пользователь / учетная запись репо.

$REPO - это имя частного репозитория

$PKGTYPE - это tarball или zipball, а $BRANCHorTAG - этоответвление, например master или имя тега для фиксации.

Первый экземпляр $USER должен иметь доступ к репо, принадлежащему второму экземпляру $USER.

.я не могу найти это документированное где-нибудь, поэтому я также немного напишу об этом, если вы хотите что-то более подробное.

1 голос
/ 05 марта 2012

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

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

Если вы хотите получить токен OAuth2, просто используйте формат GitHubt API v3 , это довольно просто. Хотя это не совсем подходит к вашей проблеме:

Это , как я получаю токен OAuth2 от GitHub для этого расширения Chrome

UPDATE

@ jayarjo Я строю URL здесь в строке 202 . Я просто создаю URL, подобный указанному вами, токен OAuth2 даже не используется для него. Все, что мне позволяет токен, - это выборка личных данных всех пользователей перед созданием разметки. Но это работает без проблем ...

Я думаю, что причина, по которой я действительно могу загрузить zipball, заключается в том, что URL фактически равен https://github.com/*, и поскольку я в настоящее время вошел в систему из-за OAuth2, у меня есть разрешение на доступ к этому URL - где это звучит так, как будто нет, поэтому вы получаете ошибку 404.

Вы можете попробовать отправить запрос на страницу, и если вы получите сообщение об ошибке, предложите пользователю сначала войти в систему, а затем, когда вы запросите zipball, у вас не должно возникнуть проблем.

0 голосов
/ 09 августа 2012

Вы можете использовать обычную аутентификацию или метод, основанный на токене.Подробнее см. https://help.github.com/articles/downloading-files-from-the-command-line.

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