如何在 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 脚本(确保您已安装 curljq

#!/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 NameProject 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