8
votes

Comment obtenir des sous-dossiers et des fichiers à l'aide de GITLAB API

J'utilise API GITLAB pour obtenir les fichiers et les dossiers et réussir,

Mais je peux obtenir uniquement des noms de répertoires, pas ses sous-dossiers et ses fichiers.

Alors, comment puis-je obtenir un arbre complet de mon référentiel?

S'il vous plaît laissez-moi savoir.

Merci d'avance, Mallikarjuna


2 commentaires

Quelle commande utilisez-vous actuellement pour obtenir les noms de répertoire?


Hi @ vonc, j'utilise obtenir une méthode comme Obtenir / Projects Pour obtenir des projets liés à Auth Token


3 Réponses :


7
votes

Selon le API , nous pouvons utiliser

Obtenir / Projects /: ID / Référentiel / Arbre

Pour répertorier les fichiers et les répertoires dans un projet. Mais nous ne pouvons obtenir que les fichiers et les répertoires en haut de niveau du représentant de cette manière, ainsi que des sous-répertoires de répertoires en haut de niveau avec Param chemin . .

Si vous voulez obtenir des annuaires de script / js / composants , par exemple, vous pouvez utiliser

Obtenir / Projects /: ID / Repository / Tree? Chemin = script / js / composants


1 commentaires

@Rwking merci de votre rappel. Je trouve le moyen de traverser l'arbre et de mettre à jour ma réponse.



5
votes

API de repos

Vous pouvez utiliser le option récursive Pour obtenir l'arbre complet en utilisant / projects /: id / référentiel / arborescence? Récursive = true p>

Par exemple: HTTPS: // VOTRE_GITLAB_HOST / API / V4 / Projets /: ID / Référentiel / Arbre? Recursive = TRUE & PER_PAGE = 100 P>

API GRAPHQL H3>

Vous pouvez également utiliser le API GITLAB GRAPHQL pour obtenir les arbres de manière récursive: p> xxx pré>

Vous pouvez accéder à l'URL suivante: https: // $ gitlab_url / - / graphql-explorateur et passé La requête ci-dessus P>

Le noeud final graphql est un message sur "https: // $ gitlab_url / API / graphql" Un exemple en utilisant & : P>

gitlab_url=<your gitlab host>
access_token=<your access token>
project_name=<your project name>
branch=master

curl -s -H "Authorization: Bearer $access_token" \
     -H "Content-Type:application/json" \
     -d '{ 
          "query": "{ project(fullPath: \"'$project_name'\") { repository { tree(ref: \"'$branch'\", recursive: true){ blobs{ nodes { name type flatPath }}}}}}"
      }' "https://$gitlab_url/api/graphql" | jq '.'


1 commentaires

Savez-vous s'il y a une limite au nombre d'articles d'arbres peuvent être retournés dans un seul appel?



1
votes

Vous devez faire un codage d'URL sur le chemin complet du fichier. Par exemple, le Saut suppose que le chemin de fichier de votre référentiel est: JavaScript / Header.js

alors vous pouvez utiliser: curl -head --header "jeton privé: " "https: // <> / API / V4 / Projets //frumpositity / fichiers / JavaScript% 2fheader% 2ejs"


0 commentaires