[devel] git -- хитрая задачка

Dmitry V. Levin ldv на altlinux.org
Вт Авг 24 09:53:49 UTC 2010


On Tue, Aug 24, 2010 at 12:31:38PM +0400, Денис Смирнов wrote:
> Имеется множество git-репозиториев (около тысячи).
> Большая часть их них -- устаревшие backup'ы, но какие определить
> по имени или еще каким-либо очевидным характеристикам невозможно.
> Разобраться в этом кошмаре вручную -- тем более.
> 
> Задача -- выявить и удалить старье (которого там процентов 90).
> 
> Лобовое решение: прогнать для каждого бранча каждого репозитория git log,
> положить результат в sqlite (commit id/путь к репо/бранч). Также положить
> в базу последний commit id каждого бранча каждого репозитория.
> 
> После этого я могу легко определить есть ли такой commit id в другом
> репозитории. И если есть, и это не последний коммит в бранче -- то наш
> бранч явно стухший и его можно удалить.

Самый лобовой способ: зафетчить в каждый репозиторий соответствующий ему
"другой", апстримный репозиторий, после чего пройтись git for-each-ref'ом
по refs/heads и выяснить (git log -n1 --pretty=format:1 ^l_ref r_ref),
есть ли в репозитории хотя бы один актуальный локальный бранч.


-- 
ldv
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 198 байтов
Описание: отсутствует
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20100824/f1497bc6/attachment.bin>


Подробная информация о списке рассылки Devel