Управление большими двоичными файлами с помощью Git - PullRequest
513 голосов
/ 12 февраля 2009

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

  1. Скопируйте двоичные файлы вручную.
    • Pro: не уверен.
    • Против: Я категорически против этого, так как это увеличивает вероятность ошибок при настройке нового сайта / переносе старого. Создает еще одно препятствие.
  2. Управляй ими всеми с помощью Git .
    • Pro: устраняет возможность «забыть» скопировать важный файл
    • Contra: расширяет хранилище и снижает гибкость управления базой кода, а извлечение, клонирование и т. Д. Займет довольно много времени.
  3. Отдельные репозитории.
    • Pro: извлечение / клонирование исходного кода выполняется быстро, как всегда, и изображения должным образом архивируются в своем собственном хранилище.
    • Contra: Удаляет простоту наличия единственного и единственного Git-репозитория в проекте. Это, безусловно, вводит некоторые другие вещи, о которых я не думал.

Что вы думаете об этом?

Также: Кто-нибудь имеет опыт работы с несколькими репозиториями Git и управления ими в одном проекте?

Файлы являются изображениями для программы, которая генерирует PDF-файлы с этими файлами. Файлы будут меняться не очень часто (как в годах), но они очень важны для программы. Программа не будет работать без файлов.

Ответы [ 12 ]

1 голос

git clone --filter из Git 2.19 + мелкие клоны

Эта новая опция может в конечном итоге стать окончательным решением проблемы двоичных файлов, если разработчики Git и GitHub сделают ее достаточно удобной для пользователя (чего они, вероятно, до сих пор не достигли для подмодулей , например) .

Он позволяет фактически получать только те файлы и каталоги, которые вы хотите для сервера, и был представлен вместе с расширением удаленного протокола.

С этим мы могли бы сначала сделать неглубокий клон, а затем автоматизировать, какие двоичные объекты нужно выбрать с помощью системы сборки для каждого типа сборки.

Уже есть --filter=blob:limit<size>, который позволяет ограничить максимальный размер двоичного объекта для извлечения.

Я привел минимальный подробный пример того, как выглядит эта функция: Как мне клонировать подкаталог только репозитория Git?

0 голосов
/ 03 октября 2014

Взгляните на camlistore . На самом деле он не основан на Git, но я считаю его более подходящим для того, что вы должны делать.

...