Множество кассовых сборов из одного репо с жесткими ссылками? - PullRequest
2 голосов
/ 24 января 2012

Кто-нибудь знает, как получить множество репозиториев 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, причем каждый файл в новой проверке представляет собой жесткую ссылку, указывающую на какой-то файл в этом каталоге.

1 Ответ

1 голос
/ 24 января 2012

Глядя на это, я наткнулся на FUSE, о котором я слышал, но никогда не использовал и не удосужился обернуть мою голову тем, чем он был на самом деле.Это позволяет мне делать то, что я считал невозможным - прокси git show команды для запросов файлов на уровне ОС.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...