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

У меня есть репозиторий SVN с макетом типа
project1 / багажник
Проект1 / филиалы
Проект1 / теги
project2 / багажник
project2 / филиалы
project2 / теги
и т.д.

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

Ответы [ 2 ]

10 голосов
/ 01 апреля 2011

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

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

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

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

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

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

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

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

1 голос
/ 30 апреля 2014

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

...