Как я могу загрузить частный репозиторий с GitHub без доступа к «git» на моем локальном компьютере?


9

Я хочу скачать приватный архив репозитория с GitHub, распаковать его, удалить архивный файл и скопировать некоторые каталоги, которые находятся внутри загруженного проекта.

Я пытался использовать, wgetно я не могу авторизоваться:

wget --header='Authorization: token MY_TOKEN_CREATED_ON_GITHUB' https://github.com/MY_USER/MY_REPO/archive/master.tar.gz -O - | tar xz

Я также попробовал с cURL:

curl -i -H 'Authorization: token MY_TOKEN_CREATED_ON_GITHUB' https://github.com/MY_USER/MY_REPO/archive/master.tar.gz > file.tar.gz | tar xz

Здесь авторизация проходит, но я не могу извлечь файл.

Как это сделать?


Почему бы тебе просто не использовать git clone https://github.com/MY_USER/MY_REPO?
Теро Килканен

1
Потому что я делаю это на сервере, где нет мерзавца.
Камил Лелонек,

Может решить вашу проблему: stackoverflow.com/questions/23347134/…
errordeveloper

Ответы:


4

Решение wgetбыло бы что-то вроде:

wget --header="Authorization: token <OAUTH-TOKEN>" -O - \
    https://api.github.com/repos/<owner>/<repo>/tarball/<version> | \
    tar xz --strip-components=1 && \
    cp -r <dir1> <dir2> ... <dirn> <destination-dir>/

Ноты:

  • --strip-components=1 удалит каталог верхнего уровня, который содержится в созданном GitHub архиве,
  • убедитесь , что вы не ставите завершающий /в конце каталогов, которые должны быть скопировано с cp( <dir1>, <dir2>..., <dirn>) и тянущимся /присутствуют в конце каталога назначения ( <destination-dir>).

0

Если у вас есть свой «Личный токен доступа», вы можете загрузить архив ветки вашего репозитория с помощью команды curl:

curl -k --header "PRIVATE-TOKEN: xxxx" https://gitlab.xxxxx/api/v4/projects/<projectID>/repository/archive?sha=630bc911c1c20283d3980dcb95fd5cb75479bb9c -o myFilename.tar.gz

ProjectID отображается на главной странице репо.

Вы можете получить значение SHA в веб-интерфейсе, выбрав нужную ветку из раскрывающегося списка и скопировав значение справа для SHA. Смотрите скриншот ниже:

введите описание изображения здесь

Другой способ сделать это через wget:

wget --no-check-certificate -O myFilename.zip --header=PRIVATE-TOKEN:xxxx "https://gitlab.xxxx/api/v4/projects/<projectID>/repository/archive.zip?sha=630bc911c1c20283d3980dcb95fd5cb75479bb9c"

Надеюсь, это поможет.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.