Каковы последствия использования общего клона git, если исходный репозиторий удален?
Таким образом, общий репозиторий git кажется более или менее идеальным для синхронизации папок с большими каплями. У меня есть что-то вроде 700 ГБ картинок и видео, которые я хочу распространить на мои компьютеры, но использование git без каких-либо других дополнений приводит к огромным накладным расходам на использование диска, которые на самом деле не нужны.
Теперь, клонирование с --shared (или -s) дает мне репозиторий git без локального хранилища объектов (если я правильно понял), что в значительной степени то, что мне нужно. Однако документация начинается с "Когда репозиторий для клонирования находится на локальной машине...". clone -s работает так же хорошо через SSH, но меня удивляет, что произойдет, если репозиторий для клона не находится на локальной машине. Поскольку документация -s начинается с этого предложения, я чувствую, что весь случай не охвачен. Есть ли что-то, за чем мне нужно следить, кроме удаления коммитов на удаленной стороне, которое может привести к тому, что определенные объекты (которые могут все еще использоваться локально) будут собираться? (что не произойдет в любом случае, так как я хочу использовать пустые репозитории на сервере)
2 ответа
Я люблю git, но, к сожалению, git не подходит для этой задачи.
Git был разработан, чтобы очень эффективно хранить историю изменений в основном для репозиториев с текстовым содержимым. Хотя git поддерживает сохранение двоичных файлов, ему придется хранить их навсегда в истории, чтобы вы могли оформить заказ на любую ревизию, что очень дорого с точки зрения дискового пространства.
Кроме того, если предположить, что ваши двоичные файлы не сжимаются (изображения, фильмы, музыка и т. Д.), Размер хранилища объектов git будет примерно таким же, как извлечение дерева. Другими словами, для 700 ГБ оригинальных файлов, хранилище объектов (.git
каталог) будет потреблять примерно столько же, а затем больше, когда вы начнете совершать - добавление и удаление контента.
Вы можете использовать так называемый неглубокий клон, который сохраняет только последнюю ревизию объекта в хранилище объектов, но неглубокие репозитории могут быть только клонированы, но не зафиксированы. В этом случае главный репозиторий git должен быть обычным (не мелким) и все еще большим, однако все мелкие клоны будут иметь разумный размер.
Вам, вероятно, будет лучше, если вы будете придерживаться более простой схемы синхронизации, например rsync. Однако в этом случае вы теряете возможность просматривать историю - бесплатного обеда нет:(
Я понимаю, что это не совсем ответ на ваш вопрос, но... не будет ли rsync намного проще синхронизировать две папки?