2011-02-01 2 views
1

Есть ли предпочтительный способ взять репозиторий git и импортировать его в существующий репозиторий Subversion в качестве нового (произвольно глубоко вложенного) каталога при сохранении фиксации история?Импорт проекта git в подкаталог репозитория Subversion при истории mainteing

Например, если у меня есть подрывная репо со следующими (упрощенными) структурами каталогов:

backends 
backends/A 
backends/B 

и я работаю над новым серверным С в мерзавца репо, теперь я хочу добавить содержимое git repo на svn repo как backends/C.

Большая часть информации, которую я нашел, по-видимому, сосредоточена на импорте на верхнем уровне (как правило, на вновь созданный или иначе пустой svn-репо).

Мой текущий подход заключается в использовании следующий фрагмент кода со страницы человека ГИТ-фильтра-ветви, чтобы подтолкнуть существующий топ-уровня мерзавца репо до backends/C

git filter-branch --index-filter \ 
     'git ls-files -s | sed "s-\t\"*-&newsubdir/-" | 
       GIT_INDEX_FILE=$GIT_INDEX_FILE.new \ 
         git update-index --index-info && 
     mv $GIT_INDEX_FILE.new $GIT_INDEX_FILE' HEAD 

затем использовать Git SVN и Git перебазироваться чтобы получить файлы в svn repo. Разве это так, как это делают большинство людей, или есть «лучший» способ?

ответ

2

Если вы хотите, чтобы все git-репо были отправлены в svn-subdir и не заботились о том, чтобы остальная часть репозитория svn не отображалась в git, вы можете просто указать git-svn в этом svn subdir вместо основного реж.

Предполагая, что упрощенная структура каталогов, которую вы дали в качестве примера, на самом деле находится в trunk /, тогда при настройке git-svn вы делаете что-то вроде git svn init -Ttrunk/backends/C url или git svn init --prefix=backends/C/ url. Эти точные команды arent, поэтому обязательно обратитесь к документации, но я надеюсь, что вам это поможет.

+0

Указание git-svn на svn subdir хорошо работает, спасибо. –

Смежные вопросы