У нас возникла необходимость в получении zipball частного репо. Для публики это довольно легко либо через API GitHub, либо вручную (https://github.com/user/repo/zipball/master). Но как насчет частных РЕПО? Не совсем очевидно, как это сделать, даже имея токен oAuth.
Есть ли в любом случае программный выбор zipball частного github-репо?
Ответ 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, вы не получите никаких проблем.
Ответ 5
Вы можете использовать метод базовой аутентификации или токена. Подробнее см. https://help.github.com/articles/downloading-files-from-the-command-line.