В нескольких местах я прочитал, что можно разделить каталог objects между несколькими репозиториями git, например. с символическими ссылками. Я хотел бы сделать это, чтобы разделить базы данных объектов между несколькими голыми репозиториями в том же каталоге:
shared-objects-database/
foo.git/
objects -> ../shared-objects-database
bar.git/
objects -> ../shared-objects-database
baz.git/
objects -> ../shared-objects-database
(Я делаю это, потому что в каждом каталоге объектов будет много больших блоков, лишне сохраненных в каталоге.)
Моя забота об этом заключается в том, что при использовании этих репозиториев git gc будет вызываться автоматически и вызывать объекты, недоступные из одного репозитория, подлежащего обрезке, что делает другие репозитории незавершенными. Есть ли простой способ обеспечить, чтобы этого не произошло? Например, существует ли параметр конфигурации, который заставлял бы --no-prune быть по умолчанию для git gc, и, если это так, этого было бы достаточно, чтобы использовать эту настройку, не рискуя потерять данные?
В настоящее время я использую механизм objects/info/alternates для обмена объектами между этими репозиториями, но сохранение этих указателей из каждого репозитория ко всем остальным немного хакерским.
(Моя другая альтернатива заключается в том, чтобы иметь только один пустой репозиторий со всеми ветвями foo.git, bar.git и baz.git с именем foo-master, foo-testing, bar-master и т.д. это будет немного больше работы для управления, поэтому, если каталог symlinked objects может работать безопасно, я бы предпочел сделать это.)
Вы можете догадаться, что это один из тех, кто использует git Для чего это не предназначено для использования, но я надеюсь, что вопрос ясен и действителен, тем не менее;)