我想使用非标准布局转换现有的 SVN 存储库,如下所示:
/ (root)
/trunk
regular trunk stuff that I would like to make the "master" branch
/folder1
files that I would like to make a separate branch "folder1"
/folder2
files that I would like to make a separate branch "folder2"
/folder3
files that I would like to make a separate branch "folder3"
...到 git 存储库,保存历史记录。
问题是folder1
, folder2
, and folder3
没有从某个点分支出来trunk
;它们是一组单独的文件,并且它们不植根于某些方便的子目录(这就是使这个问题不同于that one https://stackoverflow.com/questions/258590/how-do-i-import-svn-branches-rooted-in-different-directories-into-git-using-git).
所需的 git 分支布局如下所示:
master -----+------(trunk r1)------(trunk r2)----...
|
folder1 \-----(folder1 r1)----(folder1 r2)---...
|
folder2 \-----(folder2 r1)----(folder2 r2)---...
|
folder3 \-----(folder3 r1)----(folder3 r2)---...
(这些修订号不是实际的 svn 修订号,只是该特定文件夹中的提交编号)
我尝试过使用git svn
但它似乎希望分支位于单个目录中,每个分支包含一个子文件夹。问题是,如果我这样做,我将不得不使用/
(根目录)作为分支目录,这将使trunk
一个单独的分支(虽然我想用它作为master
分支)。
您可以通过指定多个“中继”来完成此操作git svn
通过编辑你的.git/config
file.
像平常一样初始化你的 git 存储库:
git svn init {url-to-repository} -T trunk
现在如果你编辑你的.git/config
文件中,您会发现一个类似于以下内容的部分:
[svn-remote "svn"]
url = {url-to-repository}
fetch = trunk:refs/remotes/trunk
只需添加如下所示的一些行,这会将每个文件夹添加为要获取的单个文件夹(而不是要获取的分支文件夹或标签文件夹):
fetch = folder1:refs/remotes/folder1
fetch = folder2:refs/remotes/folder2
...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)