Git аналог расширения Hg Bigfiles? - PullRequest
6 голосов
/ 02 июля 2010

Мне нужно что-то в git, похожее на Расширение Merfrial Bigfiles (примечание: я знаю git-bigfiles , но это не связано).

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

1 Ответ

5 голосов
/ 02 июля 2010

Вот несколько вариантов для рассмотрения:

Мелкие клоны : Вы можете добавить параметр --depth <depth> к git clone, чтобы получить неглубокий клон хранилища. например если <depth> равно 1, это означает, что клон будет извлекать только файлы, необходимые для самого последнего коммита. Однако такие репозитории имеют неловкие ограничения на то, что вы можете с ними делать, как описано на странице руководства git clone:

        --depth 
           Create a shallow clone with a history truncated to the specified
           number of revisions. A shallow repository has a number of
           limitations (you cannot clone or fetch from it, nor push from nor
           into it), but is adequate if you are only interested in the recent
           history of a large project with a long history, and would want to
           send in fixes as patches.

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

Расширение "git media" Скотта Чакона : автор описывает это в ответ на этот похожий вопрос и в README на github: http://github.com/schacon/git-media.

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

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

Надеюсь, это поможет.

...