Подтвердить что ты не робот

Как использовать git -svn для проверки только ствол, а не ветвей и тегов?

Я работаю над проектом java legacy, который имеет 20 модулей, связанных друг с другом. Таким образом, каждый модуль имеет собственные ветки и теги. Структура такая.


/projects
   .svn
   - module1
       .svn
       -trunk
       -branch
       -tag
   - module2
       .svn
       -trunk
       -branch
       -tag

Папка проектов составляет около 30G, что почти невозможно использовать git-svn clone для проверки всех модулей, но потому, что она учитывает все ветки и теги.

Можно ли просто клонировать только ту часть проекта, чтобы я мог начать локально выполнять?

4b9b3361

Ответ 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.