Могу ли я git -svn клонировать репозиторий svn с несколькими стандартными макетами каталогов

У меня есть SVN-репо с макетом вроде project1/багажник
project1/ветки
project1/теги
project2/багажник
project2/ветки
project2/теги
и др.

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

Ответы

Ответ 1

Вот как я это сделал. Однако могут быть более простые способы.

  • Выберите первый проект со стандартным макетом, над которым вы хотите работать, и git svn clone it:

    git svn clone --stdlayout http://sample.com/svn/repository-name/project-name repository-name

  • Перейдите в каталог repository-name и отредактируйте его файл .git/config. Вы также можете сделать это с помощью команд git-config, но мне легче в текстовом редакторе.

  • Вы увидите раздел [svn-remote "svn"], уже определенный для вашего первого проекта. Переименуйте svn-remote в нечто более уникальное, чем "svn", вероятно, такое же, как название вашего проекта. Например, [svn-remote "project-name"].

  • Сделайте больше [svn-remote "project-name"] разделов для каждого проекта, следуя шаблону первого. Дайте каждому уникальное имя! Вам нужно будет изменить настройки fetch, branches и tags, чтобы использовать правильные имена каталога Subversion для каждого проекта.

  • Как только вы закончите, сохраните файл и запустите git svn fetch --fetch-all. Другие проекты будут выбраны как удаленные в вашем локальном репозитории.

  • Чтобы переключить master между проектами, выполните git reset --hard other-project-name/trunk, как если бы вы переключались на работу в любой другой удаленной ветки Subversion.

Ответ 2

Чтобы обойти проблему одновременного проверки нескольких проектов, git -new-workdir можно использовать для проверки нескольких рабочих каталогов из того же репозитория git, см. https://github.com/git/git/blob/master/contrib/workdir/git-new-workdir