Создайте главный репозиторий git для нескольких репозиториев git-svn. - PullRequest
2 голосов
/ 16 февраля 2012

У меня есть проект, который состоит из нескольких услуг, каждый в своем собственном репозитории SVN и сценарии сборки, который проверяет каждый репозиторий SVN в виде папки в одном каталоге /project вместе с /project level Makefile для рекурсивного построения всего проекта.

Визуально это выглядит примерно так:

/project
  Makefile
  /service1    # First service (SVN repository)
    /.svn
  /service2    # Second service (SVN repository)
    /.svn
  ...

Я пытаюсь преобразовать проект в один совместный репозиторий git для совместной работы с товарищами по команде, не удаляя возможность фиксации обратно в исходные репозитории SVN.

Моя текущая идея - проверить каждый репозиторий SVN (/service1, /service2 и т. Д.), Используя git-svn, а затем создать главный репозиторий git на уровне /project, чтобы сгруппировать их в один репозиторий. Предполагаемая структура проекта будет выглядеть примерно так:

/project
  /.git      # Master git repository
  Makefile
  /service1    # First service (SVN repository)
    /.git      # .git directory for git-svn checkout of service 1
  /service2    # Second service (SVN repository)
    /.git      # .git directory for git-svn checkout of service 2
  ...

Будет ли это работать? Есть ли более простое решение?

Примечание: я не не уполномочен переопределять структуру проекта или структуру SVN-репозиториев.

1 Ответ

1 голос
/ 16 февраля 2012

Это может работать, если вы считаете /project родительским репозиторием, ссылающимся на репозитории servicexx git как подмодулями .

Таким образом, другие соавторы могут ссылаться только на родительское репо и возвращать все подмодули в нем.
Как объяснено в « Истинная природа подмодулей », они могут затем создавать / извлекать ветви внутри этих подмодулей и начинать их модифицировать.

Убедитесь, что хотя бы одна ветвь выделена для git svn dcommit (объединение с SVN):
См. « Преодоление предостережений git svn » и « Простое объединение в SVN с помощью git-svn ».

...