Как мне обрабатывать изображения в репозитории Git? - PullRequest
39 голосов
/ 22 апреля 2011

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

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

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

Ответы [ 7 ]

31 голосов
/ 22 апреля 2011

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

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

15 голосов
/ 22 апреля 2011

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

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

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

10 голосов
/ 23 апреля 2011

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

9 голосов
/ 11 июля 2016

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

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

Поддерживается GitHub , Visual Studio Online и Bitbucket Server .

3 голосов
/ 22 апреля 2011

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

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

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

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

1 голос
/ 08 марта 2015

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

0 голосов
/ 28 ноября 2013

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...