Comment puis-je télécharger un référentiel privé depuis GitHub n'ayant pas accès à 'git' sur ma machine locale?

9

Ce que je veux faire, c'est télécharger l'archive du référentiel privé à partir de GitHub, l'extraire, supprimer le fichier d'archive et copier certains répertoires qui se trouvent dans le projet téléchargé.

J'ai essayé d'utiliser wgetmais je ne peux pas m'autoriser:

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

J'ai aussi essayé avec 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

Ici, l'autorisation passe, mais je ne peux pas extraire le fichier.

Comment faire ça?

Kamil Lelonek
la source
Pourquoi n'utilisez-vous pas simplement git clone https://github.com/MY_USER/MY_REPO?
Tero Kilkanen
1
Parce que je le fais sur un serveur où il n'y a pas de git.
Kamil Lelonek
Pourrait résoudre votre problème: stackoverflow.com/questions/23347134/…
errordeveloper

Réponses:

4

La solution avec wgetserait quelque chose comme:

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

Remarques:

  • --strip-components=1 supprimera le répertoire de niveau supérieur contenu dans l'arhive créée par GitHub,
  • assurez- vous que vous ne mettez pas de fuite /à la fin des répertoires à copier avec cp( <dir1>, <dir2>, ..., <dirn>) et que la fuite /est présente à la fin du répertoire de destination ( <destination-dir>).
tjanez
la source
0

Si vous disposez de votre propre "jeton d'accès personnel", vous pouvez télécharger une archive de la branche de votre référentiel en utilisant la commande curl:

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

ProjectID est affiché sur la page principale du référentiel.

Vous pouvez obtenir la valeur SHA à partir de l'interface Web après avoir sélectionné la branche souhaitée dans le menu déroulant et copié la valeur de droite pour le SHA. Voir capture d'écran ci-dessous:

entrez la description de l'image ici

L'autre façon de le faire est via wget comme ceci:

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

J'espère que ça aide.

frakman1
la source