我正在尝试使用此命令将SVN repo中的最后100个修订版本拉到本地git仓库中(在Windows上)。
git svn clone http:// ... -r 100
出于某种原因,除了.git文件夹之外,生成的结帐是空的。
但如果没有-r参数,它可以正常工作(尽管从时间开始就检查了所有内容)。
有谁知道发生了什么事?
谢谢!
答案 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推荐的存储库布局(通常是标签,主干和分支)。