使用Git SVN克隆在windows中进行SVN到Git的迁移
我正在尝试使用Git SVN clone将代码从SVN存储库迁移到Git。我想为每个模块而不是整个项目创建一个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 https://mydomain/svn/Project/Module/trunk /释放 /分支机构/分支机构1 /分支机构/分支机构2 /分行/分行3 /分支机构/关闭/关闭1 /分支机构/关闭/关闭2 ......... 该模块有多个组件。 模块/网络模块 /韦比尔 /数据模块 /... git-svn克隆https://mydomain/svn/Project/Module Module_Git-T trunk-b branchs-b release--no最小化url--prefix=svn/--authors file=users.txt git branch-a正在显示以下内容: remotes/svn/WebModule 遥控器/svn/WebModule@1011 遥控器/svn/WebModule@3578 遥控器/svn/WebEar 遥控器/svn/WebEar@1011 遥控器/svn/WebEar@3578 远程/svn/DataModule 遥控器/svn/DataModule@1011 遥控器/svn/DataModule@3578 远程/svn/关闭 遥控器/svn/branch1 遥控器/svn/branch1@1011 remotes/svn/branch2 remotes/svn/branch3 遥控器/svn/closed1 遥控器/svn/closed2 我在Windows7中使用GitBash Git版本:2.19.1 颠覆:1.9.4使用Git SVN克隆在windows中进行SVN到Git的迁移,git,svn,clone,Git,Svn,Clone,我正在尝试使用Git SVN clone将代码从SVN存储库迁移到Git。我想为每个模块而不是整个项目创建一个git存储库。我们有一个稍微非标准的项目结构,我们有主干、发布分支和分支文件夹。我不确定什么地方是Git中发布分支的好地方。下面是当前存储库结构、我使用的命令和结果。 我也希望在Git中保持相同的结构 我已经做了一个多星期了,并没有走得太远。任何帮助都将不胜感激。谢谢大家! https://mydomain/svn/Project/Module/trunk
我尝试了svn2git,但在git checkout-f master时失败了,建议的解决方案都不适合我。选项
-b发行版提供了一个目录,其中git svn fetch
查找分支子目录。在您的例子中,gitsvn
将/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
(是的,将发布
分支视为一个主干),并合并结果:
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
我做了以下几件事
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
git svn inithttps://mydomain/svn/Project/Module Module_Git-T trunk-b分支——无url
更新了.git/config并添加了以下内容:
分支={release}:refs/remotes/*
gitsvn获取
谢谢你的建议,我不想弄乱当前的SVN结构。我正在尝试你的选择。