Импорт проекта git в подкаталог репозитория Subversion при сохранении истории - PullRequest
1 голос
/ 01 февраля 2011

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

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

backends
backends/A
backends/B

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

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

Мой текущийПодход заключается в том, чтобы использовать следующий фрагмент со страницы руководства git-filter-branch, чтобы перенести существующий верхний уровень git-репо на 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 rebase, чтобы получитьфайлы в репозиторий SVN.Это то, как большинство людей делают это, или есть «лучший» способ?

1 Ответ

2 голосов
/ 01 февраля 2011

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

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

...