我正在尝试使用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
我尝试了svn2git,但是在git checkout -f master上失败了,没有建议的解决方案对我有用。
答案 0 :(得分:0)
选项-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
答案 1 :(得分:0)
我做了以下事情。
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