Как хранить двоичные файлы в системе контроля версий, которые сами по себе небольшие, но история git становится большой? - PullRequest
0 голосов
/ 14 июля 2020

Я работаю iOS разработчиком в проекте white label, и поэтому у нас есть репозиторий со всеми ресурсами проекта (изображения, шрифты, тексты и т. Д. c.), А также мы создаем файл пакета для каждого продукта (вместе с car файлами с изображениями и цветами). Для тех, кто не знает, файл пакета на самом деле представляет собой папку, в которой хранятся все ресурсы, что-то вроде пакета. Мы используем это, чтобы легко изменить все ресурсы для другого продукта, и мы хотим строить статически, вместо того, чтобы получать ресурсы через бэкэнд.

Проблема, которая у нас есть в проекте, и я ищу другие вопросы, всегда обсуждаю о больших файлах, но проблема не в больших файлах, а в наборе небольших двоичных файлов, а файлы пакета (примерно 5 МБ со всеми файлами и 14 МБ соответственно для каждого product), но репозиторий всегда становится все больше и больше из-за истории git. У некоторых разработчиков около 2 ГБ на их компьютерах Mac только в этом репозитории.

Я уже использовал git repack -a -d --depth=250 --window=250, и у нас были некоторые улучшения, но через две недели он снова стал большим и Я должен использовать снова.

У меня есть вопрос: как лучше всего хранить эти файлы ? Я вижу, что некоторые люди рекомендуют использовать Git LFS или SVN , но я всегда вижу файлы, которые намного больше, чем те, которые у меня есть, поэтому я думаю, что если бы не было слишком много для простой задачи и каковы должны быть все альтернативы, прежде чем я приму решение и пожалею об этом позже.

1 Ответ

0 голосов
/ 15 июля 2020

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

Если, несмотря на это, у вас все еще есть приличное количество двоичных файлов, вы можете попробовать Git LFS. Это типичное решение для этого случая.

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

Вы можете сделать это, запустив git clone --filter=blob:limit=1m URL, который будет предотвратить удаление больших двоичных объектов размером более 1 МБ.

...