我怎么访问svn分支机构使用混帐svn与一个非标准svn回购布局?
-
02-10-2019 - |
题
标准的回购布局在svn如下。
/trunk
/branches
featureX
featureY
/tags
1.0
2.0
库我工作的是一个更平坦的结构。
trunk
featureX
featureY
从本质上讲,干线的水平相同的其他分支机构。我不能使用的或s-b的选项 git svn init
因为这个原因。
我怎么拉 trunk
作为跟踪 master
和拉 featureX
作为一个跟踪相同的名字吗?我不关心任何其他分支机构或标签。
我已经看到类似的问题和人建议重组svn库。这是从桌子上就这个问题感到关切。
解决方案
我已经想出了一个方向拉,在多个分支机构从一个任意的svn储存库的结构。
的 -b
选择 git svn init
只会的工作,如果所有分支机构都组合在一起,在一个子目录的储存库,例如在标准布局。如果所有分支机构,其中包括干线,是在同一个文件夹,这不会真的工作。你可以拉在选定的树枝从svn储存库的基本上建立多个"干"int仓库的内容。
假定平结构的问题与的三个分支机构的主干,featureX,并featureY.
实例仓库的内容。
mkdir myproject cd myproject git svn init url:to/svn/repo -T trunk
这将创建一个混帐库svn元数据
.git/config
文件。开放的配置文件和审查svn元数据
vim .git/config
您的配置文件将这样的事情。
[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true autocrlf = false [svn-remote "svn"] url = url:to/svn/repo fetch = trunk:refs/remotes/trunk
的
svn-remote
标题定义的参考称为"svn"指向你svn库。的fetch
参告诉混帐svn里拉的新修订内svn库。现在,我们需要告诉混帐svn有关的其他分支,我们是感兴趣。重复
svn-remote
部分整个拷贝
svn-remote
部分的配置文件和粘贴到它的下面现有的配置文本。[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true autocrlf = false [svn-remote "svn"] url = url:to/svn/repo fetch = trunk:refs/remotes/trunk [svn-remote "svn"] url = url:to/svn/repo fetch = trunk:refs/remotes/trunk
修改新的
svn-remote
部分更改名称
svn-remote
部分标题和名称的分支,这点。[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true autocrlf = false [svn-remote "svn"] url = url:to/svn/repo fetch = trunk:refs/remotes/trunk [svn-remote "svn-featureX"] url = url:to/svn/repo fetch = featureX:refs/remotes/featureX
现在混帐svn将跟踪两svn分支机构。你可以使用的名称"svn"和"svn-featureX"任何混帐svn命令,该命令需要一个
[svn-remote]
参数。你可以使用的名称"中继"和"featureX"任何命令的,需要一个远程支的名字作为一个参数。
这个解决方案不会规模好,是有点黑客与格式错误svn库。所以,只要你只需要追踪一个少数svn分支,这会工作得很好。如果数svn分支机构你需要的工作变得过大,严肃看重组你的svn库的标准布局。
其他提示
这样 文章说明了, ,您可以编写用于运行类似工具的规则 svn2git
(您的完整版本较少 svn2git在这里)
看 那些例子 对于您可以重写的规则,以匹配那些平坦的SVN目录/分支并将其声明为GIT分支。