Jak mogę pobrać prywatne repozytorium z GitHub, które nie ma dostępu do „git” na moim komputerze lokalnym?

9

Chcę pobrać prywatne archiwum repozytorium z GitHub, rozpakować je, usunąć plik archiwum i skopiować niektóre katalogi znajdujące się w pobranym projekcie.

Próbowałem użyć, wgetale nie mogę się autoryzować:

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

Próbowałem również z 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

Tutaj autoryzacja mija, ale nie mogę wyodrębnić pliku.

Jak to zrobić?

Kamil Lelonek
źródło
Dlaczego po prostu nie używasz git clone https://github.com/MY_USER/MY_REPO?
Tero Kilkanen
1
Ponieważ robię to na serwerze, na którym nie ma git.
Kamil Lelonek
Może rozwiązać Twój problem: stackoverflow.com/questions/23347134/...
errordeveloper

Odpowiedzi:

4

Rozwiązaniem wgetbyłoby coś takiego:

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>/

Uwagi:

  • --strip-components=1 usunie katalog najwyższego poziomu, który znajduje się w utworzonym przez GitHub archiwum,
  • upewnij się, że nie umieścić końcowego znaku /na końcu katalogów, które mają być kopiowane cp( <dir1>, <dir2>, ..., <dirn>), a wzdłużny /jest obecna na końcu katalogu docelowego ( <destination-dir>).
tjanez
źródło
0

Jeśli masz własny „osobisty token dostępu”, możesz pobrać archiwum oddziału swojego repozytorium za pomocą polecenia curl:

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

ProjectID jest wyświetlany na stronie głównej repozytorium.

Możesz uzyskać wartość SHA z webUI po wybraniu gałęzi, którą chcesz z rozwijanego menu i skopiowaniu wartości po prawej stronie dla SHA. Zobacz zrzut ekranu poniżej:

wprowadź opis zdjęcia tutaj

Innym sposobem na to jest użycie wget w następujący sposób:

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

Mam nadzieję że to pomogło.

frakman1
źródło