9

ファイルとフォルダーを取得するためにgitlab apiを使用していますが、成功しました。

ただし、サブフォルダーとファイルではなく、ディレクトリ名のみを取得できます。

では、リポジトリの完全なツリーを取得するにはどうすればよいですか。

私にお知らせください。

前もって感謝します, マリカルジュナ

4

4 に答える 4

8

APIによると、使用できます

GET /projects/:id/repository/tree

プロジェクト内のファイルとディレクトリを一覧表示します。ただし、この方法ではリポジトリの最上位にあるファイルとディレクトリ、および param を使用して最上位にあるディレクトリのサブディレクトリのみを取得できますpath

たとえば、のディレクトリを取得したい場合はscript/js/components、次を使用できます

GET /projects/:id/repository/tree?path=script/js/components

于 2015-09-06T14:15:42.320 に答える
5

残りの API

/projects/:id/repository/tree?recursive=trueを使用して、再帰オプションを使用して完全なツリーを取得できます。

例: https://your_gitlab_host/api/v4/projects/:id/repository/tree?recursive=true&per_page=100

GraphQL API

最近リリースされたGitlab GraphQL APIを使用して、ツリーを再帰的に取得することもできます。

{
  project(fullPath: "project_name_here") {
    repository {
      tree(ref: "master", recursive: true){
        blobs{
          nodes {
            name
            type
            flatPath
          }
        }
      }
    }
  }
}

次の URL に移動できます: https://$gitlab_url/-/graphql-explorer そして上記のクエリを過ぎます

Graphql エンドポイントは、「https://$gitlab_url/api/graphql」の POST です。curl & jq を使用:

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 '.'
于 2019-10-26T15:27:11.340 に答える