web-dev-qa-db-fra.com

Comment puis-je télécharger un seul fichier brut depuis un dépôt privé github en utilisant la ligne de commande?

Sur le serveur CI, je veux récupérer un fichier de configuration que nous gérons sur Github afin de pouvoir le partager entre plusieurs tâches. J'essaie d'obtenir ce fichier via curl, mais ces deux approches échouent (je reçois un 404):

# As advised by the oAuth docs
curl -H 'Authorization: token the_token' -L -o setup.sh https://raw.github.com/org/repo/file

# The url of the raw file after clicking to view it
curl -L https://raw.github.com/org/repo/file?login=username&token=the_token 
49
Matt Gibson

Les réponses précédentes ne fonctionnent pas (ou ne fonctionnent plus).

Vous pouvez utiliser l'API V3 pour obtenir un fichier brut comme celui-ci (vous aurez besoin d'un jeton OAuth):

curl -H 'Authorization: token INSERTACCESSTOKENHERE' -H 'Accept: application/vnd.github.v3.raw' -O -L https://api.github.com/repos/owner/repo/contents/path

Tout cela doit aller sur une seule ligne. L'option -O enregistre le fichier dans le répertoire en cours. Vous pouvez utiliser -o filename pour spécifier un nom de fichier différent.

Pour obtenir le jeton OAuth, suivez les instructions suivantes: https://help.github.com/articles/creating-an-access-token-for-command-line-use

J'ai aussi écrit ceci en tant que Gist: https://Gist.github.com/madrobby/9476733

EDIT: les références d’API pour la solution sont les suivantes:

61
thomasfuchs

Vous pouvez également utiliser un "jeton d'accès personnel" de github ( https://github.com/settings/tokens ):

TOKEN=...
curl -s https://[email protected]/<user or organization>/<repo name>/<branch>/<path to file>/<file_name>

Exemple:

$ curl -s https://[email protected]/concourse/concourse/master/README.md
....
11
theartofrain

Je sais que c'est une vieille question, mais aucune des solutions proposées ci-dessus n'a fonctionné pour moi. Peut-être que l'API a changé depuis.

Cela a fonctionné:

curl -H 'Authorization: token [insert your token here]' -o output.txt https://raw.githubusercontent.com/[organization]/[repo]/[branch]/[path to file]

8
mark amos

Ou, si vous n'avez pas de jeton:

curl --user [your_user] 'https://raw.github.com/path/to/file.config' > file.config
5
PeqNP

Je me débattais avec cela pendant quelques minutes jusqu'à ce que je réalise que tout ce qui était nécessaire était d'envelopper l'URL entre guillemets pour échapper à l'esperluette. 

curl "https://raw.github.com/org/repo/file?login=username&token=the_token"

Cela a fonctionné pour moi dans mon dépôt privé.

4
Philip Forget

J'ai rencontré une erreur d'authentification lorsque l'URL a été redirigé vers Amazon S3:

Un seul mécanisme d'autorisation est autorisé; seul le paramètre de requête X-Amz-Algorithm ...

Passer de l'en-tête Authorization: token X au paramètre de requête ?access_token=<token> a fonctionné pour moi.

2
chrismo

Nous devions télécharger des fichiers depuis des dépôts privés GitHub assez souvent et les scripts de hacky Shell ne le réduisaient pas vraiment. Nous avons donc créé fetch , qui est un outil open source et multi-plateforme facilitant le téléchargement de fichiers source et libérer des actifs à partir d'une balise git, d'un commit ou d'une branche de repos GitHub publics et privés. 

Par exemple, pour télécharger le fichier baz à partir de la version 0.1.3 d'un dépôt GitHub privé vers /tmp, procédez comme suit:

GITHUB_OAUTH_TOKEN="your token"
fetch --repo="https://github.com/foo/bar" --tag="0.1.3" --source-path="/baz" /tmp
1
Yevgeniy Brikman

Juste un ajout à la réponse acceptée, si vous utilisez l’URL de Github Enterprise est légèrement différente:

curl -H 'Authorization: token [your token]' \
-H 'Accept: application/vnd.github.v3.raw' \
-L https://[your domain]/api/v3/repos/[owner]/[repo-name]/contents/[path of file]
0
lonewarrior556

Ci-dessous devrait bien fonctionner. Un "brut" devant le nom de votre branche (maître dans ce cas).

curl -L -O https://github.com/your/repo/raw/master/fetch_file.sh

0
Subhakar K S
  1. dans le navigateur, ouvrez votre dépôt Github: cliquez sur le fichier
  2. ouvrez les outils de développement dans le navigateur: sélectionnez l’onglet Réseau
  3. dans le navigateur github: cliquez sur le bouton Télécharger
  4. fermer pop-up
  5. dans les outils de développement du navigateur: clic droit sur la liste qui a file_name?token=ABAHQCAT6KG...
  6. sélectionner une copie -> copier l'adresse du lien

    l'URL est au format:

    https://raw.githubusercontent.com/<USERNAME>/<PATH>/<FILENAME>?token=ABAHQCAT6KGHYHMG2SLCDT243PH4I

  7. dans le terminal:

    wget -O myFilename https://raw.githubusercontent.com/<USERNAME>/<PATH>/<FILENAME>?token=ABAHQCAT6KGHYHMG2SLCDT243PH4I

Le lien n’est valable que pour un temps limité ou vous pouvez créer votre jeton: Article GitHub

0
Milan Rakos