Эффективно поддерживать единый репозиторий git при одновременной активности нескольких извлеченных версий?

TL; DR:

У меня есть одно репозиторий git для приложения с множеством веток для разных незавершенных версий. Мне нужно иметь несколько копий этого репо, которые можно проверить (неправильный термин?) В разных ветках или коммитах, но без фактического хранения нескольких копий с вероятными избыточными файлами.

Длинная версия:

Я работаю над приложением с командой, пытающейся улучшить производительность. Это очень эмпирический процесс, в котором разные подходы реализуются каждый в своей ветке, и проводится множество тестов, чтобы выбрать, что работает хорошо.

Разрабатываю несколько подходов в собственных ветках, а также провожу тестирование производительности и корректности нескольких версий приложения. Чтобы сохранить несколько сборок, у меня просто есть копия для каждой версии, и я выполняю сборку с использованием этой версии, которая устанавливается в определенное место для версии, со сценарием, который позволяет мне выбирать, какую версию использовать в текущей среде.

Система проверки корректности запрещает одновременное тестирование в одном дереве исходных текстов. Поэтому, если сама версия имеет несколько конфигураций, их нельзя тестировать одновременно. Поскольку для завершения этого теста иногда может потребоваться час, я просто создаю дерево исходных текстов для каждой конфигурации и, как указано выше, собираю и устанавливаю в отдельном месте. Это позволяет мне запускать несколько тестов одновременно.

Хотя это не моя идеальная установка, моя проблема в том, что все это делается в университетском кластере HPC, который имеет довольно строгие дисковые квоты. Пользовательский / домашний каталог может содержать только 15 ГБ данных, но у меня неограниченное количество файлов. Пользовательский / дополнительный каталог (система хранения для конкретной системы) может содержать 200 ГБ данных, но может содержать только 600 файлов (включая каталоги) на гигабайт дискового хранилища (в данном случае 200*600 или 120000). К сожалению, мои настройки превышают квоту диска на /home, а также квоту на количество файлов на /extra.

Друг предложил свой процесс, заключающийся в том, чтобы при необходимости архивировать / распаковывать каталоги. Этот дополнительный процесс звучит как еще одна проблема в и без того утомительной настройке.

Основная проблема в том, что репозиторий git несколько велик: ~650 МБ на диске и +7500 файлов. У меня есть около 17 таких репозиториев, а также различные библиотеки и множество материалов для тестирования производительности (что довольно тяжеловесно), что выводит их за пределы квоты. Если бы у меня был джинн, я бы попросил его дать мне волшебный репозиторий git, который физически существовал только однажды. Каждая "копия" выглядит и ведет себя как обычная копия репозитория git с ветвями, которые можно редактировать и фиксировать, не заглушая другие ветки. Но на самом деле эта копия была "взглядом", поддерживаемым системой.

Вопросы:

Существует ли что-то вроде моего волшебного желания?

Как люди с ограниченным временем и ресурсами эффективно справляются с этой проблемой? (Вся эта работа выглядит как нечто вроде тестирования фермы сборки /CI.)

Я знаю, что основным ответом будет "Просто удалите некоторые из репозиториев", что я и сделаю, но я действительно работаю с довольно большим количеством из них в разное время в течение недели, и мне приходится играть в "дурака". репо 'будет болью.

0 ответов

Другие вопросы по тегам