如何在 GitLab 中查找空回购(零提交)
How to find empty repos (zero commit) in GitLab
我正在使用 GitLab 11.9(它很旧,我知道......),我需要列出所有已创建但为空且提交为零的存储库。
是否可以通过 API 从管理界面列出它们?
为了使用 Gitlab API 实现这一点,我们将结合项目 API https://docs.gitlab.com/ee/api/projects.html#list-all-projects
和提交 API
https://docs.gitlab.com/ee/api/projects.html#list-all-projects
到以下 bash 脚本(确保您已安装 curl
和 jq
)
#!/bin/bash
ACCESS_TOKEN=
GITLAB_URL=
curl -s --header "PRIVATE-TOKEN: $ACCESS_TOKEN" $GITLAB_URL/api/v4/projects/?per_page=50000 | jq '.[] | "\(.id) \(.web_url) \(.name)"' | sed 's/^"\(.*\)"$//'| while read line
do
PROJECT_ID=$(echo $line | cut -d " " -f1 )
PROJECT_NAME=$(echo $line | cut -d " " -f3- )
REPO_URL=$(echo $line | cut -d " " -f2 )
COMMIT_IDS=$(curl -s --header "PRIVATE-TOKEN: $ACCESS_TOKEN" $GITLAB_URL/api/v4/projects/$PROJECT_ID/repository/commits | jq '.[].id')
if [[ $COMMIT_IDS == "" ]]; then echo "$PROJECT_ID $PROJECT_NAME $REPO_URL";fi
done
执行示例:
./my_script.sh "<your_access_token>" "https://gitlab.example.com"
此脚本的输出将是带有 0 commits
的回购的 Project ID
Project Name
和 Project URL
例如
33294654 project-for-issues-286e58fd4f6a5603 https://gitlab.com/gitlab-qa-sandbox-group/qa-test-2022-01-31-18-09-07-311cfe607ff3ce9b/project-for-issues-286e58fd4f6a5603
33294612 project-with-ci-variables-c1b233588d3fbce7 https://gitlab.com/gitlab-qa-sandbox-group/qa-test-2022-01-31-18-09-05-68cad66167d10aa2/project-with-ci-variables-c1b233588d3fbce7
Note
:此脚本假设您的 Gitlab 中的存储库少于 50.000
我正在使用 GitLab 11.9(它很旧,我知道......),我需要列出所有已创建但为空且提交为零的存储库。
是否可以通过 API 从管理界面列出它们?
为了使用 Gitlab API 实现这一点,我们将结合项目 API https://docs.gitlab.com/ee/api/projects.html#list-all-projects
和提交 API https://docs.gitlab.com/ee/api/projects.html#list-all-projects
到以下 bash 脚本(确保您已安装 curl
和 jq
)
#!/bin/bash
ACCESS_TOKEN=
GITLAB_URL=
curl -s --header "PRIVATE-TOKEN: $ACCESS_TOKEN" $GITLAB_URL/api/v4/projects/?per_page=50000 | jq '.[] | "\(.id) \(.web_url) \(.name)"' | sed 's/^"\(.*\)"$//'| while read line
do
PROJECT_ID=$(echo $line | cut -d " " -f1 )
PROJECT_NAME=$(echo $line | cut -d " " -f3- )
REPO_URL=$(echo $line | cut -d " " -f2 )
COMMIT_IDS=$(curl -s --header "PRIVATE-TOKEN: $ACCESS_TOKEN" $GITLAB_URL/api/v4/projects/$PROJECT_ID/repository/commits | jq '.[].id')
if [[ $COMMIT_IDS == "" ]]; then echo "$PROJECT_ID $PROJECT_NAME $REPO_URL";fi
done
执行示例:
./my_script.sh "<your_access_token>" "https://gitlab.example.com"
此脚本的输出将是带有 0 commits
Project ID
Project Name
和 Project URL
例如
33294654 project-for-issues-286e58fd4f6a5603 https://gitlab.com/gitlab-qa-sandbox-group/qa-test-2022-01-31-18-09-07-311cfe607ff3ce9b/project-for-issues-286e58fd4f6a5603
33294612 project-with-ci-variables-c1b233588d3fbce7 https://gitlab.com/gitlab-qa-sandbox-group/qa-test-2022-01-31-18-09-05-68cad66167d10aa2/project-with-ci-variables-c1b233588d3fbce7
Note
:此脚本假设您的 Gitlab 中的存储库少于 50.000