Как импортировать ветки svn с корнями в разных каталогах в git с помощью git-svn? - PullRequest
11 голосов
/ 03 ноября 2008

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

Кажется, что git-svn init работает с одним аргументом --branches, то есть он ожидает, что все ветви будут в одном месте.

trunk
branches
  1.1
    1.2.1
    1.2.2
  1.2
    1.2.1
    1.2.2
    1.2.3
  features
    feature1
    feature2

Есть идеи, как с этим справиться?

Спасибо

Ответы [ 4 ]

13 голосов
/ 10 марта 2009

В вашем конфигурационном файле установите для секции svn-remotes что-то вроде:

[svn-remote "svn"]
    url = svn://svnserver/repo
    fetch = trunk:refs/remotes/trunk
    branches = branches/*/*:refs/remotes/*
    tags = tags/*:refs/remotes/tags/*

Это должно позволить вам захватить вложенные ветви.

1 голос
/ 03 ноября 2008

По соглашению, все ветви Subversion живут по одному пути 'ветвей' в хранилище Subversion, поэтому я не удивлен, что git-svn делает это предположение.

Я бы предложил следующее (обратите внимание, вы можете потерять некоторую историю в этой операции):

  1. Сглаживает пути Subversion branches, используя соглашение об именах для сохранения уникальных идентификаторов и идеи текущей структуры.
  2. Выполнить git-svn
  3. Перемещайте вещи в хранилище git в соответствии с вашими практиками.

Опасность losing history зависит от того, насколько хорошо git-svn следует за операциями копирования по разным путям. Я столкнулся с этой проблемой при недавней миграции репозиториев Subversion (1.4-ish).

0 голосов
/ 06 ноября 2008

Вы можете добавить несколько пультов git svn для каждой ветви или, возможно, для каждого из каталогов филиалов. Начальная git svn fetch будет длиться вечно, но, насколько я понимаю, она должна работать.

0 голосов
/ 03 ноября 2008

Можно ли создать репо git для каждого из подкаталогов филиала?

...