我有一个存储库,其布局如下:
trunk/
projectA
projectB
branches/
projectA-1.0
projectB-1.0
tags/
projectA-1.0.1
projectB-1.0.1
我想将它们转换为单独的 git 存储库,其中 trunk/projectA 作为顶级目录,其所有分支作为 git 分支。
每当我尝试指定一个git svn init
like git svn init -T trunk/projectA -b branches -t tags http://svn.example.com
, 后续git svn fetch
在不同的修订上神秘地失败。有时会一直到200,有时会停止。
我目前的想法是,我应该创建一个 git 存储库,将整个 subversion 存储库镜像为单个实体,每个项目都有子目录。然后我会用git-filter-branch
将子目录重写到项目的根目录。
但是,我不确定如何让分支表现得像我想要的那样git-filter-branch
and.
另外,创建一个为每个项目的“主干”具有不同分支的单个 git 存储库也是理想的,在这种情况下,如果没有真正的主干,我不会有任何问题。
你有没有考虑过svn2git https://stackoverflow.com/questions/572893/cloning-a-non-standard-svn-repository-with-git-svn/572898#572898为了将你的 svn 导入到 git 存储库中?
它比git svn clone
因为如果你在 svn 中有这样的代码:
trunk
...
branches
1.x
2.x
tags
1.0.0
1.0.1
1.0.2
1.1.0
2.0.0
git-svn
将遍历提交历史记录来构建新的 git 存储库。
It 将导入所有分支和标签作为远程 svn 分支,而你真正想要的是 git-native 本地分支和 git tag 对象.
所以导入这个项目后,你会得到:
$ git branch
* master
$ git branch -a
* master
1.x
2.x
tags/1.0.0
tags/1.0.1
tags/1.0.2
tags/1.1.0
tags/2.0.0
trunk
$ git tag -l
[ empty ]
svn2git 完成您的项目后,您将得到以下结果:
$ git branch
* master
1.x
2.x
$ git tag -l
1.0.0
1.0.1
1.0.2
1.1.0
2.0.0
最后,它确保 master 的 HEAD 与 svn repo 的当前主干相同。
所以在你的情况下,它会给你实际的 git 分支来应用git-filter-branch
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)