В нескольких местах я прочитал, что можно разделить каталог 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 Для чего это не предназначено для использования, но я надеюсь, что вопрос ясен и действителен, тем не менее;)