ファイルとフォルダーを取得するためにgitlab apiを使用していますが、成功しました。
ただし、サブフォルダーとファイルではなく、ディレクトリ名のみを取得できます。
では、リポジトリの完全なツリーを取得するにはどうすればよいですか。
私にお知らせください。
前もって感謝します, マリカルジュナ
ファイルとフォルダーを取得するためにgitlab apiを使用していますが、成功しました。
ただし、サブフォルダーとファイルではなく、ディレクトリ名のみを取得できます。
では、リポジトリの完全なツリーを取得するにはどうすればよいですか。
私にお知らせください。
前もって感謝します, マリカルジュナ
APIによると、使用できます
GET /projects/:id/repository/tree
プロジェクト内のファイルとディレクトリを一覧表示します。ただし、この方法ではリポジトリの最上位にあるファイルとディレクトリ、および param を使用して最上位にあるディレクトリのサブディレクトリのみを取得できますpath
。
たとえば、のディレクトリを取得したい場合はscript/js/components
、次を使用できます
GET /projects/:id/repository/tree?path=script/js/components
/projects/:id/repository/tree?recursive=trueを使用して、再帰オプションを使用して完全なツリーを取得できます。
例: https://your_gitlab_host/api/v4/projects/:id/repository/tree?recursive=true&per_page=100
最近リリースされた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 '.'