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