Як я можу завантажити приватне сховище з 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
Тому що я роблю це на сервері, де немає git.
Каміль Лелонек

Може вирішити вашу проблему: 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 від webUI, вибравши потрібну гілку зі спадного меню та скопіювавши значення праворуч для 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.