TLDR :
У меня есть один репозиторий git для приложения с множеством веток для другой текущей версии. Мне нужно иметь несколько копий этого репо, которые могут быть извлечены (неправильный термин?) В разных ветках или коммитах, но без на самом деле хранения нескольких копий с вероятными избыточными файлами.
Длинная версия :
Я работаю над приложением, команда которого пытается улучшить производительность. Это очень эмпирический процесс, каждый из которых реализует различные подходы в своей собственной ветке, и много испытаний, чтобы выбрать, что работает хорошо.
Я разрабатываю несколько подходов в своих собственных ветвях, а также провожу работу и корректность тестирование нескольких версий приложения. Чтобы сохранить несколько сборок, у меня просто есть копия для каждой версии, и сборка выполняется с использованием этой версии, которая устанавливается в определенном месте c, с помощью сценариев, которые позволяют мне выбирать, какую версию использовать в текущей среде.
Система проверки правильности запрещает параллельное тестирование в одном и том же дереве исходных текстов. Таким образом, если сама версия имеет несколько конфигураций, они не могут быть протестированы одновременно. Поскольку для выполнения этого теста иногда может потребоваться час, я просто создаю дерево исходных текстов для каждой конфигурации и, как указано выше, собираю и устанавливаю в отдельном месте. Это позволяет мне запускать несколько тестов одновременно.
Хотя это не идеальная настройка, моя проблема в том, что все это делается на университетском кластере HP C, который имеет довольно строгие дисковые квоты. Каталог пользователя / home может содержать только 15 ГБ данных, но у меня может быть неограниченное количество файлов. Каталог пользователя / extra (система хранения системы c) может содержать 200 ГБ данных, но может иметь только 600 файлов (включая каталоги) на гигабайт дискового хранилища (в данном случае 200 * 600 или 120000). К сожалению, моя установка превышает дисковую квоту в / home, а также квоту на подсчет файлов в /extra.
Друг предложил свой процесс, который заключается в том, чтобы при необходимости каталоги tar / untar. Этот дополнительный процесс звучит как еще одна болевая точка в и без того утомительной установке.
Основная проблема заключается в том, что репозиторий git довольно большой: ~ 650 МБ на диске и +7500 файлов. У меня есть около 17 таких репозиториев, а также различные библиотеки, и множество материалов для тестирования производительности (что довольно тяжело), что приводит к увеличению квот. Если бы у меня был ген ie, я бы попросил его дать мне магическое хранилище git, которое физически существовало только один раз. Каждая «копия» выглядит и ведет себя как обычная копия репозитория git с ветвями, которые можно редактировать и фиксировать, не портя никакую другую ветку. Но на самом деле эта копия была «представлением», которое поддерживалось системой.
Вопросы :
Делает что-то вроде моих волхвов c wi sh существовать?
Как эффективно справляются с этой проблемой люди с ограниченным временем и ресурсами? (Вся эта работа похожа на сборку фермы / тестирование CI.)
Я знаю, что основным ответом будет «Просто удалите некоторые из репозиториев», что я и сделаю, но я действительно работаю с довольно многими из них в разное время в течение недели, и необходимость играть в «дурацкое репо» будет болезненной.