Как использовать git -svn для проверки только ствол, а не ветвей и тегов?
Я работаю над проектом java legacy, который имеет 20 модулей, связанных друг с другом. Таким образом, каждый модуль имеет собственные ветки и теги. Структура такая.
/projects
.svn
- module1
.svn
-trunk
-branch
-tag
- module2
.svn
-trunk
-branch
-tag
Папка проектов составляет около 30G, что почти невозможно использовать git-svn clone
для проверки всех модулей, но потому, что она учитывает все ветки и теги.
Можно ли просто клонировать только ту часть проекта, чтобы я мог начать локально выполнять?
Ответы
Ответ 1
Изменить. Я неправильно понял вопрос и ответил, что, как я думал, вы спрашиваете, а не то, что вы на самом деле спросили.
Чтобы клонировать только туловище
Клонирование одного каталога Subversion легко, и на самом деле не имеет значения, к какому каталогу вы клонируете. Просто не указывайте какие-либо аргументы "layout" и напрямую указывайте путь к внешней линии:
git svn clone http://path.to.svn.repo/module1/trunk
Чтобы клонировать определенный модуль, включая теги и ветки и т.д.
"Нормальный" git svn clone
будет выглядеть примерно так:
git svn clone --stdlayout http://path.to.svn.repo/
То, что вы хотите использовать, будет таким образом:
git svn clone --stdlayout http://path.to.svn.repo/module1/
Это найдет подпапки trunk
, branch
и tag
папки module1
и будет клонировать их для вас.
Ответ 2
Я обнаружил, что git svn clone с --stdlayout не подходит для меня.
В той же ситуации эта стратегия работала хорошо:
git svn init --trunk $repo/projects/module1/trunk --tags $repo/projects/module1/tag --branches $repo/projects/module1/branch
git svn fetch
Ответ 3
Я просто хотел добавить дополнительную информацию на основе @me_and ответа.
команда, заданная для клонирования только туловища, будет работать, но в папке git созданная структура:
refs
|--remotes
|--git-svn
который эквивалентен refs/remotes/git -svn.
если мы сделаем это вместо:
git svn clone https://domain/svn/repo/trunk --no-metadata --authors-file=authors.txt --trunk=https://domain/svn/repo/trunk
то созданная структура:
refs
|--remotes
|--origin
|--trunk
который эквивалентен refs/remotes/origin/trunk
Вторая структура выглядит более git -дружественно и потенциально может уменьшить команды и сценарии оболочки, которые вы должны писать:)
P.S. аргументы [--no-metadata] и [-author-file] являются необязательными.
- опция метаданных отключает git для добавления svn-информации после сообщения фиксации.
- параметр author-file позволяет вам сопоставить ваших вкладчиков svn с вкладками git, чтобы ваши исторические изменения svn не были перепутаны в git.