Подтвердить что ты не робот

Есть ли в любом случае программный выбор zipball частного github-репо?

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

4b9b3361

Ответ 1

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

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

Новый Download Api Link

Сначала я нашел информацию о загрузке архива: 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://github.com/settings/applications) Я создал персональный токен.

Затем, используя инструкции на следующей странице, я узнал, как получить частное репо, на которое у вас есть разрешение: 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


с 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.

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

Ответ 3

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

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

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

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

Ответ 4

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

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

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

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

UPDATE

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

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

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