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

Jam*_*mes 2 svn git clone git-svn

我正在尝试使用此命令将SVN存储库中的最后100个修订引入本地git存储库(在Windows上)。

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

由于某些原因,除了.git文件夹以外,结果检出为空。

但是如果没有-r参数,它就可以正常工作(尽管可以检查出时间的曙光)。

有人知道发生了什么吗?

谢谢!

小智 5

对于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.
Run Code Online (Sandbox Code Playgroud)

对于您的情况,您需要找到SVN存储库的最新修订版,并从中减去100,以找到克隆的起始修订版。您还应该明确地将HEAD定义为最终修订版(因为也可以仅克隆修订历史记录的一部分)。

因此,根据您的情况,计算出起始修订版本号是($ rev),然后运行以下命令:

git svn clone -r $rev:HEAD http://...
Run Code Online (Sandbox Code Playgroud)

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

git svn clone -r HEAD http://...
Run Code Online (Sandbox Code Playgroud)

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

git svn clone -r HEAD http://.../branches/mybranch
Run Code Online (Sandbox Code Playgroud)