Кто-нибудь знает, как получить множество репозиториев git "только для чтения", основанных на жестких ссылках? Другими словами, я хочу, чтобы последующие рабочие каталоги репо объемом ~ 500 МБ представляли собой только жесткие ссылки, таким образом делая его всего несколькими КБ.
Кроме этого, любые отзывы о моем безумии приветствуются.
Хорошо, теперь фон:
Я работаю над созданием инструмента QA, в который я хочу попасть:
1f381de1.somesite.com
9e010d42.somesite.com
...etc
Поскольку эти проекты включают в себя динамические (например, php
) файлы, размещенные, например, в Apache, я не могу передать весь вывод через что-то вроде git show
, или я бы с радостью (если кто-нибудь знает возможный способ сделай это, я бы с удовольствием это услышал).
Я не хочу делать git clone
или git-new-workdir
для каждой версии, которую я хочу запустить, так как я буду копировать все живые файлы в репо. Поскольку я не хочу постоянно собирать мусор в этом проекте, может быть одновременно сотни или более «активных» версий, и я не хочу копировать то, что может быть ~ 500 МБ проектом 100 раз.
Так что в идеале существует какой-то инструмент, который позволяет мне получать несколько проверок только для чтения на основе жестких ссылок. Если нет, то мое нынешнее мышление:
- Оформить заказ в хранилище
- создать папку "несжатые объекты"
- при необходимости распаковать файл
.pack
- Я хочу новую версию:
- сделать каталог
- распаковать журнал коммитов для дерева с
git catfile -p
- распаковать каждый объект в папку «несжатые объекты» (если он еще не существует)
- подходите к дереву по мере необходимости, повторяя вышеуказанный шаг
- создать жесткие ссылки в моей новой папке на каждый несжатый объект
Окончательный результат заключается в том, что у меня есть несжатая версия всех файлов, которые я использую в .git/objects
, причем каждый файл в новой проверке представляет собой жесткую ссылку, указывающую на какой-то файл в этом каталоге.