git svn clone:在%git-core%/ git-svn第3015行的字符串eq中使用未初始化的值

时间:2011-10-12 09:31:30

标签: perl git svn clone

我在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 ----

等等。

你能告诉我如何解决这个问题吗?谢谢!

1 个答案:

答案 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之前,看看会发生什么。它可能有效,但可能没有。

实际上,调试程序将首先查看哪些是未定义的并找出原因。作者可能有兴趣修复它,特别是如果您可以发送存储库的副本。