Как скачать zip архив приватного репозитория по url ссылке через токен?
Я делал все по следующим шагам как указано здесь https://stackoverflow.com/a/76922082/15735942:
You can use read-only access token to share a private repository.
git clone https://<username>:<token>@github.com/<username>/<repo>.git
To generate a new token:
Go to Settings > Developer Settings > Personal access tokens > Fine-grained tokens > Generate new token.
Select the repositories you want to share under Repository access > Only select repositories.
Set the access level of the token to read-only in Permissions > Repository permissions > Contents > Access: read-only.
Finally, click on Generate token.
Я пробовал создавать токен и использовать следующий формат ссылки: https://<username>:<token>@github.com/<username>/<repository>/archive/refs/heads/main.zip
, но вместо скачивания zip файла я получаю ошибку 404: Not Found. В чём может быть проблема?
Ответы (1 шт):
По поводу скачивания по ссылке вида
https://<username>:<token>@github.com/<username>/<repository>/archive/refs/heads/<ref>.zip
- такой вариант вполне рабочий, вот проверил через curl:
При открытии этой же ссылки в браузере предлагает скачать файл.
Проверьте, что все указали правильно, в том числе имя ветки (ветка действительно main
, как вы указываете, а не например master
).
Другие способы скачивания:
git clone
предназначено только для клонирования репозитория, а не для скачивания произвольного файла. Через него можно разве что склонировать репозиторий, потом уже упаковать в zip.
Скачать можно с помощью Github API, как тут показано: Download a repository archive (zip)
Например, через curl:
curl -L \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer <YOUR-TOKEN>" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/repos/OWNER/REPO/zipball/REF \
--output file.zip
или утилиту gh (Github CLI):
gh api \
-H "Accept: application/vnd.github+json" \
-H "X-GitHub-Api-Version: 2022-11-28" \
/repos/OWNER/REPO/zipball/REF > file.zip
- OWNER - владелец репозитория
- REPO - имя репозитория
- REF - ветка (например, main или master), тэг или хэш коммита
При использовании утилиты gh предварительно нужно будет авторизоваться командой gh auth login
.
Например, так (токен будет взят из файла mytoken.txt):
gh auth login --with-token < mytoken.txt
Для утилиты gh кроме прав на чтение репозиторев нужно будет еще право read:org
, для запроса через curl (или просто http запросов) это не обязательно.