Как перечислить / удалить все пустые репозитории в GitLab.?

# #gitlab #repo

Вопрос:

Как перечислить / удалить все пустые репозитории в GitLab. У меня в моей GitLab есть несколько пустых репозиториев. Есть ли какой-нибудь способ удалить их все вместо удаления вручную?

Ответ №1:

Я не предоставляю вам здесь сценарий, поскольку я его не написал, я просто описываю процесс, который я бы выбрал, и API, которые были бы полезны для этой работы.

Первый вопрос, который нужно задать, заключается в том, как вы определяете пустой репозиторий — предположим, вы говорите репозиторий с определенным количеством коммитов.

Для этого вы можете использовать API проектов https://docs.gitlab.com/ee/api/projects.html#list-all-projects — где вы можете получить список всех проектов с некоторой статистикой и сгенерировать список из тех, кто соответствует вашим характеристикам. ( statistics.commits это хорошее поле для этого)

 GET /users/:user_id/projects
 

С этим списком идентификаторов проектов вы можете начать удалять их с помощью project API для удаления https://docs.gitlab.com/ee/api/projects.html#delete-project

 DELETE /projects/:id
 

Ответ №2:

/projects API GitLab возвращает свойство, вызываемое empty_repo в каждом проекте. Я не нашел разумного способа запроса в соответствии с ним в самом API (хотя, возможно, я что-то упускаю), но вы могли бы написать сценарий с помощью такого инструмента, как jq .

Например, чтобы получить идентификаторы всех пустых проектов:

 curl --header "PRIVATE-TOKEN: <yourtoken>" -k https://gitlab.com/api/v4/projects | jq '.[] | select(.empty_repo==true) | .id'
 

Ответ №3:

В дополнение к ответу Саймона, самое важное — определить пустые репозитории. Помимо количества коммитов, вы также можете использовать last_activity_at для фильтрации время.

После того, как вы найдете проекты. Вы можете удалить их с помощью API УДАЛЕНИЯ проектов.