2010-09-01 5 views
27

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

Имея мастер репозитория GIT на нашем центральном сервере, мы также можем просматривать изображения с нашего телевизора или получать доступ к ним через FTP, если мы нуждаемся в них, находясь вдали от дома.

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

Теперь вопрос: как будут обрабатываться изображения в Git? Будет ли разрастаться хранилище Git, сохраняя изображение для каждой версии репозитория? Или он сохранит только историю изображения, когда он действительно изменит свой контент?

Разница в использовании дискового пространства должна быть довольно большой для двух заданных сценариев.

+0

Считаете ли вы использование DropBox? DropBox намного проще в использовании, и он также отслеживает историю истории (до 30 дней). –

+2

DropBox - это внешняя служба, которая заставит меня платить деньги за обработку моих фотографий ... моих фотографий довольно много, и они довольно большие, для этого сценария я не уверен, что я готов заплатить за это. – Morten

ответ

44

Каждый объект в вашем репозитории будет храниться один раз и ссылаться на его сумму SHA1. Это означает, что размещение трех копий изображения 100 КБ в двух каталогах вашего репо будет использовать 100 КБ, а также некоторые несущественные накладные расходы.

То же самое относится к толканию, вытягиванию и ветвлению. Пока сумма SHA1 изображения не изменяется, git никогда не будет хранить вторую копию или переместить более одной копии по сети.

Вы будете использовать вдвое больше места на диске на каждой машине: Git хранит копию всех своих данных в скрытом каталоге .git в корне вашего репо.

+2

Отличный ответ! В нем точно описано, что мне было интересно узнать в Git-internals. – Morten

2

Он достаточно умен, чтобы только отслеживать изменения, а не создавать полную копию репозитория

+0

Ну, не совсем. Git не отслеживает изменения, отслеживает состояния. Он генерирует разности «на лету», а не сохраняет состояние как начальное состояние и ряд различий, таких как подрывная деятельность. В случае редактирования файла git будет хранить оба файла в полном объеме, независимо от того, как мало было изменено в результате редактирования. – meagar

+0

Ну, не совсем. Когда Git помещает объекты в пакеты, он использует дельта, что может привести к значительной экономии дискового пространства. Поэтому просто убедитесь, что вы повторно упакуете свое репо, и с вами все будет в порядке. – siride

+0

@siride Не для изображений, которые не меняются: p – meagar

6

изображения Я думаю, вы должны рассмотреть возможность использования rsync. Из того, что я понял, вы просто хотите синхронизировать свои сетевые папки, верно? Есть ли настоящая необходимость в управлении версиями?

+7

Я бы рекомендовал для этого сценария унисон http://www.cis.upenn.edu/~bcpierce/unison (и специально), unison-gtk, over rsync. – gotgenes

+0

Хотя это верно, он не отвечает на вопрос о том, как Git обрабатывает двоичные изображения за кулисами. Что касается rsync, вы принимаете только машины linux/unix.По крайней мере, одна машина использует Windows, а поддержка git лучше для окон. Но нет, управление версиями не требуется. – Morten

+0

унисон кажется интересным для реального сценария изображения – Morten

Смежные вопросы