Миграция SVN в Git в Windows с помощью git svn clone - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь перенести код из репозитория SVN в Git с помощью клона git svn.Я хочу создать git-репозиторий для каждого модуля, а не для всего проекта.У нас немного нестандартная структура проекта, у нас есть ствол, ветка релиза и папка веток.Я не уверен, что было бы хорошо иметь ветку релизов в Git.Текущая структура хранилища, команда, которую я использовал, и результат приведены ниже.Я хотел бы сохранить ту же структуру в Git.

Я занимаюсь этим уже больше недели и не зашел слишком далеко.Любая помощь будет принята с благодарностью.Спасибо!

https://mydomain/svn/Project/Module/trunk
                                   /release
                                   /branches/branch1
                                   /branches/branch2
                                   /branches/branch3
                                   /branches/closed/closed1
                                   /branches/closed/closed2 
                                   .........

The Module has multiple components.

Module/WebModule
      /WebEar
      /DataModule
      /...

git svn clone https://mydomain/svn/Project/Module Module_Git -T trunk -b branches -b release --no-minimize-url --prefix=svn/ --authors-file=users.txt

git branch -a is displaying the following:

remotes/svn/WebModule
remotes/svn/WebModule@1011
remotes/svn/WebModule@3578
remotes/svn/WebEar
remotes/svn/WebEar@1011
remotes/svn/WebEar@3578
remotes/svn/DataModule
remotes/svn/DataModule@1011
remotes/svn/DataModule@3578
remotes/svn/closed
remotes/svn/branch1
remotes/svn/branch1@1011
remotes/svn/branch2
remotes/svn/branch3
remotes/svn/closed1
remotes/svn/closed2

I am using Git Bash in Windows 7
Git version: 2.19.1
Subversion: 1.9.4

Я попробовал svn2git, но он не работает при git checkout -f master, ни одно из предложенных решений не сработало для меня.

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Я сделал следующее.

git svn init https://mydomain/svn/Project/Module Module_Git -T trunk -b branches --no-minimize-url 

updated .git/config and added the following:

branches = {release}:refs/remotes/*

git svn fetch
0 голосов
/ 14 декабря 2018

Опции -b release дают каталог , в котором git svn fetch ищет подкаталоги ветвей.В вашем случае git svn получает все подкаталоги каталога /release/ как ветви.Что, очевидно, неправильно, но простого обходного пути нет.

Чтобы извлечь каталог release как ветвь, необходимо переместить его в подкаталог.Что-то вроде

svn mkdir release-dir
svn mv release release-dir
git svn clone https://mydomain/svn/Project\/Module Module_Git -T trunk -b branches -b release-dir --no-minimize-url --prefix=svn/ --authors-file=users.txt

Если вы не можете переместить ветку релиза даже временно, мой совет - клонировать два раза, первый раз с помощью -T trunk, второй раз с помощью -T release (да, обработайте release ветка как ствол) и объединяем результаты:

git svn clone https://mydomain/svn/Project\/Module Module_Git -T trunk -b branches --no-minimize-url --prefix=svn/ --authors-file=users.txt clone1
git svn clone https://mydomain/svn/Project\/Module Module_Git -T release --no-minimize-url --prefix=svn/ --authors-file=users.txt clone2
cd clone1
git fetch ../clone2 master:release
...