git svn clone创建空的git存储库?

时间:2014-01-30 12:57:24

标签: git svn clone git-svn

我正在尝试使用此命令将SVN repo中的最后100个修订版本拉到本地git仓库中(在Windows上)。

  

git svn clone http:// ... -r 100

出于某种原因,除了.git文件夹之外,生成的结帐是空的。

但如果没有-r参数,它可以正常工作(尽管从时间开始就检查了所有内容)。

有谁知道发生了什么事?

谢谢!

2 个答案:

答案 0 :(得分:4)

使用git svn时,-r参数引用SVN中的修订号,而不是所需的修订数。

“git help svn”命令的摘录显示了-r选项的以下描述:

   -r <arg>, --revision <arg>
       Used with the fetch command.

       This allows revision ranges for partial/cauterized history to be supported. $NUMBER, $NUMBER1:$NUMBER2 (numeric ranges),
       $NUMBER:HEAD, and BASE:$NUMBER are all supported.

       This can allow you to make partial mirrors when running fetch; but is generally not recommended because history will be skipped
       and lost.

在您的情况下,您需要找到SVN存储库的最新版本并从中减去100以查找克隆的起始版本。您还应该明确定义HEAD作为最终修订版(因为它也可以仅克隆修订历史记录的子集)。

因此,在您的情况下,找出起始修订号是什么($ rev)并运行如下命令:

git svn clone -r $rev:HEAD http://...

或者,如果您只想获取最新版本而不提取任何修订历史记录:

git svn clone -r HEAD http://...

注意:您还可以使用-s选项为SVN存储库指定标准的trunk / branches / tags布局,但是这只有在克隆整个存储库历史记录时才有意义。使用SVN分支时,我发现从您感兴趣的分支开始克隆存储库更有效。例如:

git svn clone -r HEAD http://.../branches/mybranch

答案 1 :(得分:0)

建议的命令是:

git svn clone -s -r rev:HEAD your_svn_server

-s很重要,因为它遵循svn推荐的存储库布局(通常是标签,主干和分支)。