我在Windows XP上使用msysgit来克隆SVN仓库。经过很长时间的等待,我遇到了一些错误,克隆无法继续。它说:在git-core / git-svn第3015行的字符串eq中使用未初始化的值。我在这个文件中找到的代码是:
最后if($ url eq $ gs-> full_url);
我不知道如何解决这个问题。 Git在这里创建了许多分支,每个分支附加一个 - ,例如
refs/remotes/2.0@3044
refs/remotes/2.0@3044-
refs/remotes/2.0@3044--
refs/remotes/2.0@3044---
refs/remotes/2.0@3044 ----
等等。
你能告诉我如何解决这个问题吗?谢谢!
答案 0 :(得分:0)
我希望有更多知识的人会回答,但这就是我找到的。 我使用相同的工具,顶部的$ VERSION是'1.7.6.msysgit.0'。
在第3015行附近,我看到了这段代码:
while (1) {
# It is possible to tag two different subdirectories at
# the same revision. If the url for an existing ref
# does not match, we must either find a ref with a
# matching url or create a new ref by growing a tail.
$gs = Git::SVN->init($u, $p, $repo_id, $ref_id, 1);
my (undef, $max_commit) = $gs->rev_map_max(1);
last if (!$max_commit);
my ($url) = ::cmt_metadata($max_commit);
last if ($url eq $gs->full_url);
$ref_id .= '-';
}
print STDERR "Initializing parent: $ref_id\n" unless $::_q > 1;
第3015行是“最后一次($ url eq $ gs-> full_url);”所以$ url或$ gs-> full_url是未定义的,这是程序不准备处理的条件。我怀疑存储库结构中的某些东西使它混淆了。在任何情况下,我们都可以假设没有找到匹配的url,并退出循环。所以,如果我是你,我会尝试添加“最后除非(定义$ url&& define $ gs-> full_url);”在3015之前,看看会发生什么。它可能有效,但可能没有。
实际上,调试程序将首先查看哪些是未定义的并找出原因。作者可能有兴趣修复它,特别是如果您可以发送存储库的副本。