Подтвердить что ты не робот

Git и двоичные данные

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

Разве это не проблема с большим репо, в котором изображения меняются регулярно, если начальная выборка репо не станет довольно большой? Кто-нибудь сталкивался с проблемой в этом мире? Например, я видел несколько альтернатив, используя подмодули и сохраняя изображения в отдельном репо, но это только уменьшает кодовую базу, репозиторий изображения все равно будет огромным. В принципе, мне просто интересно, есть ли там хорошее решение.

4b9b3361

Ответ 1

Я бы не назвал этот "checkout", но да, первый раз, когда вы извлекаете репозиторий, при условии, что бинарные данные огромны и несжимаемы, это будет то, что есть - огромно. И да, поскольку закон сохранения все еще действует, его разбиение на модули не спасет вас от времени и времени при первоначальном вытягивании репозитория.

Одно из возможных решений по-прежнему использует отдельный репозиторий и --depth. Мелкие хранилища имеют некоторые ограничения, но я не помню, что именно, так как я никогда не использовал его. Проверьте документы. Ключевое слово "неглубокое".

Изменить: От git-clone(1):

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

Ответ 2

К сожалению, git не предназначен для хранения двоичных данных. Поскольку он распространяется, вы будете вытаскивать все версии всех файлов всякий раз, когда вы клонируете его. Также смешно трудно обрезать эти большие двоичные файлы из вашего репозитория кода. Подробнее об этом здесь: (http://www.somethingorothersoft.com/2009/09/08/the-definitive-step-by-step-guide-on-how-to-delete-a-directory-permanently-from-git-on-widnows-for-dumbasses-like-myself/).

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

Ответ 3

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

Ответ 4

Обсуждается большое хранилище файлов с GIT здесь: http://blog.deveo.com/storing-large-binary-files-in-git-repositories/

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