我有一个如下所示的 SVN 存储库结构。我们在分支下使用多个级别用于各种发布维护分支,以及用于功能分支的目录。
git-svn init 似乎与单个 --branches 参数一起工作,即似乎期望所有分支都在一个位置。
trunk
branches
1.1
1.2.1
1.2.2
1.2
1.2.1
1.2.2
1.2.3
features
feature1
feature2
关于如何处理这个问题的任何想法?
谢谢
在您的配置文件中,将 svn-remotes 部分设置为:
[svn-remote "svn"]
url = svn://svnserver/repo
fetch = trunk:refs/remotes/trunk
branches = branches/*/*:refs/remotes/*
tags = tags/*:refs/remotes/tags/*
这应该让你抓住嵌套的分支。
按照惯例,Subversion 分支都存在于 Subversion 存储库中的单个“分支”路径中,所以我对git-svn做出这个假设并不感到惊讶。
我建议以下(注意,您可能会在此操作中丢失一些历史记录):
branches路径,使用命名约定来保持唯一身份和当前结构的想法。git-svngit以符合您的实践。的危险losing history取决于git-svn从不同路径进行复制操作的程度。我最近在迁移颠覆存储库(1.4-ish)时遇到了这个问题。
git为每个分支子目录创建一个 repo 是否可行?
您可以git svn为每个分支添加多个遥控器,或者可能为每个分支目录添加多个遥控器。最初的git svn fetch需要永远,但据我所知,它应该可以工作。