Я хочу что-то в мерзавце, который подобен Расширению Mercurial Bigfiles (примечание: Я знаю о мерзавце-bigfiles, но это не связано).
В основном я хочу сохранить большие двоичные файлы в своем репозитории мерзавца, но я не хочу получать каждую версию когда-либо большого двоичного файла, когда я делаю клон. Я только хочу загрузить большие двоичные файлы когда я контроль определенный пересмотр, содержащий те большие файлы.
Вот несколько вариантов, которые следует рассмотреть:
Мелкие клоны : вы можете добавить параметр - depth
в git clone
, чтобы получить неглубокий клон репозитория. например если
равно 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 в первое место.
Надеюсь, это поможет.