问题
默认 git svn clone 仅从分支创建开始导入历史记录,尽管事实上,文件的历史记录存在于SVN存储库之前的分支创建中。
我们的SVN分支是由 svn copy
如果那很重要
我的尝试
我试过了 --no-minimize-url
和 --follow-parent
,但没有成功。从分支创建开始,生成的Git存储库与没有这些参数的情况相同。
期望的结果
Git存储库,包含SVN存储库创建的完整历史记录。
更新
我的实际命令行是
git svn clone http://svnserver/repo/dir1/dir2/project
有什么帮助 -T
结果命令的参数:
git svn clone http://svnserver/repo/ -T dir1/dir2/project
默认情况下,git svn clone仅从分支创建中导入历史记录
尽管事实上,文件的历史记录存在于svn中
存储库先前的分支创建
是。那是真实的。 git svn
如果被告知,它只会尝试将分支导入为分支。从git-svn的联机帮助页:
克隆SVN存储库时,如果没有用于描述的选项
使用存储库布局(--trunk, - tags, - branch,
--stdlayout),git svn clone将创建一个具有完全线性历史记录的git存储库,其中分支和标记显示为单独的
工作副本中的目录。
如果您将一个分支的URL传递给 git svn clone
(而不是顶级网址),您只能获得该分支的线性历史记录。这可能就是你所看到的。
如果需要完整历史记录,请使用上面提到的存储库布局选项,并传递顶级URL。然后 git svn
将尝试为SVN分支创建git分支,并尝试给他们正确的历史记录,在创建之前返回。
请注意,这将为您提供包含所有分支的完整存储库。如果您只需要一些分支,则需要按照联机帮助页中的说明修改配置:
也可以通过使用a来获取分支或标记的子集
以逗号分隔的大括号内的名称列表。例如:
[svn-remote "huge-project"]
url = http://server.org/svn
fetch = trunk/src:refs/remotes/trunk
branches = branches/{red,green}/src:refs/remotes/branches/*
tags = tags/{1.0,2.0}/src:refs/remotes/tags/*
看到 GIT-SVN(1)。