# #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 УДАЛЕНИЯ проектов.