Git-svn - 导入完整的历史记录

Hop*_*ard 11 svn git git-svn

问题

默认情况下,git svn clone仅从分支创建开始导入历史记录,尽管事实上,文件的历史记录在创建分支之前存在于SVN存储库中.

svn copy如果重要的话,我们的SVN分支是由我们创建的.

我的尝试

我试过--no-minimize-url--follow-parent,但没有成功.从分支创建开始,生成的Git存储库与没有这些参数的情况相同.

期望的结果

Git存储库,包含SVN存储库创建的完整历史记录.

更新

我的实际命令行是

git svn clone http://svnserver/repo/dir1/dir2/project
Run Code Online (Sandbox Code Playgroud)

-T结果命令的参数有什么帮助:

git svn clone http://svnserver/repo/ -T dir1/dir2/project
Run Code Online (Sandbox Code Playgroud)

sle*_*ske 10

默认情况下,git svn clone仅从分支创建开始导入历史记录,尽管事实上,文件的历史记录存在于svn存储库之前的分支创建中.

是.那是真实的.git svn如果被告知,它只会尝试将分支导入为分支.从git-svn的联机帮助页:

克隆SVN存储库时,如果没有使用描述存储库布局的选项(--trunk, - targs, - .branches, - stdlayout),git svn clone将创建一个具有完全线性历史记录的git存储库,其中分支和标记在工作副本中显示为单独的目录.

如果将一个分支的URL传递给git svn clone(而不是顶级URL),则只能获取该分支的线性历史记录.这可能就是你所看到的.

如果需要完整历史记录,请使用上面提到的存储库布局选项,并传递顶级URL.然后git svn将尝试为SVN分支创建git分支,并尝试给他们正确的历史记录,在创建之前返回.

请注意,这将为您提供包含所有分支的完整存储库.如果您只需要一些分支,则需要按照联机帮助页中的说明修改配置:

也可以通过在大括号内使用逗号分隔的名称列表来获取分支或标记的子集.例如:

       [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/*
Run Code Online (Sandbox Code Playgroud)

git-svn(1).

  • 如果你指定多个单个分支作为多个`svn-remote.{name} .fetch`配置选项(你需要在运行`git svn init`和第一个`git svn fetch`之间手动执行此操作,没有`git svn clone这里的简短),你可以获取一些特定的分支,包括它们之间的分支历史. (3认同)