мерзавец svn клонируется кроме конкретной папки

Я хочу к клону мерзавца репозиторий SVN за исключением одной папки в корневой папке svn.

Как я делаю это?

Я мог сделать git svn clone svnrepo/dir/sb-dir/ если мне было нужно только sb-dir но мне нужны все папки (и файлы) в dir кроме design папка

7
задан Lakshman Prasad 3 March 2010 в 13:42
поделиться

1 ответ

Если вы используете последнюю версию Git1.7.0, она предлагает sparse checkout.

Функция "sparse checkout" позволяет проверять только часть рабочего дерева.

Смотрите Git Sparse Checkout SO question: вам всё ещё нужно клонировать all репо, но вы можете проверять (т.е. заполнять ваше рабочее дерево) только частями клонированного репо)


Единственный другой способ - преобразовать design как подмодуль.
Как упоминается в книге GitPro:

Поддержка подмодулей в Git'е позволяет репозиторию содержать в качестве поддиректории checkout внешнего проекта.
Подмодули сохраняют свою индивидуальность; поддержка подмодулей просто хранит расположение репозитория подмодуля и ID коммита, поэтому другие разработчики, клонирующие содержащий проект ("суперпроект"), могут легко клонировать все подмодули в той же ревизии.
Возможны частичные проверки суперпроекта: вы можете указать Git'у клонировать ни один, некоторые или все подмодули.

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

Моя проблема в том, что папка с дизайном занимает около 700 мб; и на git svn clone уходят часы. Весь остальной проект вместе взятый занимает десятки мб.

Но это означает модификацию SVN-репо, чтобы выделить design как "внешнюю" ссылку, затем git svn clone и добавить в клонированное Git-репо ссылку на субмодуль.

3
ответ дан 7 December 2019 в 10:00
поделиться