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

Как обрабатывать изображения в репозитории Git?

Я унаследовал проект iOS среднего размера - ~ 30 000 строк кода, который имеет безумное количество изображений. Конечно, мы используем Git/Github для scm. В настоящее время изображения включены в дерево каталогов и, таким образом, попадают в репо, раздуваются из него и, как правило, создают большую головную боль.

У нас есть 4 разработчика проекта, некоторые виртуальные. Мне приходится перемещать изображения в Dropbox, ссылаться на них из проекта iOS и сохранять свойства судна.

Есть ли у кого-нибудь комментарий к этой идее? Что вы делаете с файлами изображений/видео/аудио в настройке Git scm?

4b9b3361

Ответ 1

Я бы очень волновался по этому поводу; что, если вы хотите обновить изображение, а затем передумаете? Или что, если вам нужно создать выпуск обслуживания со старыми изображениями?

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

Ответ 2

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

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

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

Ответ 3

Я не использовал его сам, но есть проект под названием git media, который предназначен для упрощения работы с большие двоичные файлы, такие как изображения в git. Это от Скотта Чакона, который как-то большой в мире git, поэтому я думаю, что он, вероятно, работает достаточно хорошо.

Ответ 4

Я нахожу git неправильным инструментом для работы, когда дело касается бинарного источника.

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

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

Я сам рассмотрел dropbox, но я чувствую потребность в более специализированном решении. Тот, который позволяет мне быстро синхронизировать компьютеры, автоматически сохраняет эти последние десять версий или около того, позволяет мне сохранять и указывать конкретные версии и поддерживать блокировку файлов. (Читайте: избегайте необходимости пытаться объединять двоичные файлы.) Это другой инструмент для другого задания/рабочего процесса. К сожалению, я не знаю этого, но я бы хотел, чтобы это произошло.

Ответ 5

git-lfs представляется хорошим современным решением этой проблемы. Он отслеживает файлы как локальные текстовые указатели в вашем репо, сохраняя их во внешнем большом хранилище файлов. Это похоже на решение subrepo, но без необходимости в ручном вмешательстве.

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

Он поддерживается GitHub, Visual Studio Online и Сервер Bitbucket.

Ответ 6

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

Git лучше всего подходит только для исходного кода и включает только исходные коды в Github.

Subversion и Git обе вместе могут дать вам полное управление версиями всех вещей.

Ответ 7

Мне интересна эта проблема. В моих блужданиях я наткнулся на git приложение: http://git-annex.branchable.com Не использовал его, потому что у моего провайдера сервера его нет.