git svn fetch 将分支的子文件夹分隔到它们自己的远程分支中



我正在尝试将我的SVN repo迁移到git repo,具有非标准的布局。我把主干和分支放在SVN repo的同一个文件夹中。我的SVN存储库的结构如下:

branches/
releases/
1.0/
back_end/
front_end/
2.0/
back_end/
front_end/
...
trunk/
back_end/
front_end/

所以我试图将git的repo的trunk设置为branches/releases/trunk文件夹,而分支则设置为branches/releases/目录下的每个版本文件夹。命令如下:

git svn init -T /branches/releases/trunk --branches="/branches/releases/{1.0,2.0}" [repo_url]
git svn fetch --authors-file=authors.txt

这几乎按预期工作,并且trunk看起来被正确迁移了。但是,为模拟svn分支而创建的远程分支被划分到每个子文件夹(front_end, back_end)中。运行git branch -r:

时如下所示
origin/1.0/front_end
origin/1.0/back_end
origin/2.0/front_end
origin/2.0/back_end
origin/trunk

有人知道为什么这些分支会像这样分开吗?

git svn选项中,--branches不列出分支,它列出了Subversion在其下存储模仿SVN分支的子目录的父目录。根据上面的结构选项--branches="/branches/releases/{1.0,2.0}"创建了4个分支:1.0/front_end1.0/back_end2.0/front_end2.0/back_end。这就是你所看到的。

如果你只想要两个分支1.02.0,选项应该是--branches=/branches/releases/。然后这两个分支中的每一个都有两个子目录front_endback_end,就像主干一样。

最新更新