Таким образом, общий репозиторий git кажется более или менее идеальным для синхронизации папок с большими каплями. У меня есть что-то вроде 700 ГБ картинок и видео, которые я хочу распространить на мои компьютеры, но использование git без каких-либо других дополнений приводит к огромным накладным расходам на использование диска, которые на самом деле не нужны.

Теперь, клонирование с --shared (или -s) дает мне репозиторий git без локального хранилища объектов (если я правильно понял), что в значительной степени то, что мне нужно. Однако документация начинается с «Когда репозиторий для клонирования находится на локальной машине ...». clone -s работает так же хорошо через SSH, но меня удивляет, что произойдет, если репозиторий для клона не находится на локальной машине. Поскольку документация -s начинается с этого предложения, я чувствую, что весь случай не охвачен. Есть ли что-то, за чем мне нужно следить, кроме удаления коммитов на удаленной стороне, которое может привести к тому, что определенные объекты (которые могут все еще использоваться локально) будут собираться? (что не произойдет в любом случае, так как я хочу использовать пустые репозитории на сервере)

2 ответа2

1

Я люблю git, но, к сожалению, git не подходит для этой задачи.

Git был разработан, чтобы очень эффективно хранить историю изменений в основном для репозиториев с текстовым содержимым. Хотя git поддерживает сохранение двоичных файлов, он должен будет хранить их навсегда в истории, чтобы вы могли получить доступ к любой ревизии, что очень дорого с точки зрения дискового пространства.

Кроме того, если предположить, что ваши двоичные файлы не сжимаются (изображения, фильмы, музыка и т.д.), Размер хранилища объектов git будет примерно таким же, как извлечение дерева. Другими словами, для 700 ГБ оригинальных файлов хранилище объектов (каталог .git ) будет потреблять примерно столько же, а затем и больше, когда вы начнете фиксировать - добавление и удаление контента.

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

Вам, вероятно, будет лучше, если вы будете придерживаться более простой схемы синхронизации, такой как rsync. Однако в этом случае вы теряете возможность просматривать историю - бесплатный обед отсутствует :(

0

Я понимаю, что это не совсем ответ на ваш вопрос, но ... не будет ли rsync намного проще синхронизировать две папки?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .