通过git svn克隆单个SVN分支的问题

时间:2010-08-20 13:53:19

标签: svn git git-svn

我在SVN Repository上尝试了以下命令,只能通过git克隆一个分支。

git svn clone  http://svn.supose.org/supose/branches/B_0.7.1

但收到以下错误消息:

Initialized empty Git repository in /Users/km/workspace-supose/git/B_0.7.1/.git/
W: Ignoring error from SVN, path probably does not exist: (160013): Filesystem has no    item: '/supose/!svn/bc/100/branches/B_0.7.1' path not found
W: Do not be alarmed at the above message git-svn is just searching aggressively for old history.
This may take a while on large repositories
error: git-svn died of signal 10
mac:git km$ 


mac:git km$ git --version
git version 1.7.1

有人知道出了什么问题吗?

更新 我通过环境变量打开了trace。尝试过它也失败了。更新为git 1.7.2,结果相同。

mac:git km$ git svn clone  http://svn.supose.org/supose/branches/B_0.7.1
trace: exec: 'git-svn' 'clone' 'http://svn.supose.org/supose/branches/B_0.7.1'
trace: run_command: 'git-svn' 'clone' 'http://svn.supose.org/supose/branches/B_0.7.1'
trace: built-in: git 'config' '--bool' '--get' 'svn.noauthcache'
trace: built-in: git 'config' '--bool' '--get' 'svn.nometadata'
trace: built-in: git 'config' '--get' 'svn.revision'
trace: built-in: git 'config' '--get' 'svn.rewriteuuid'
trace: built-in: git 'config' '--bool' '--get' 'svn.usesvmprops'
trace: built-in: git 'config' '--bool' '--get' 'svn.nocheckout'
trace: built-in: git 'config' '--get' 'svn.authorsprog'
trace: built-in: git 'config' '--bool' '--get-all' 'svn.branches'
trace: built-in: git 'config' '--bool' '--get' 'svn.usesvnsyncprops'
trace: built-in: git 'config' '--bool' '--get' 'svn.followparent'
trace: built-in: git 'config' '--get' 'svn.prefix'
trace: built-in: git 'config' '--bool' '--get' 'svn.useSvmProps'
trace: built-in: git 'config' '--get' 'svn.authorsfile'
trace: built-in: git 'config' '--get' 'svn.username'
trace: built-in: git 'config' '--bool' '--get' 'svn.stdlayout'
trace: built-in: git 'config' '--get' 'svn.repackflags'
trace: built-in: git 'config' '--bool' '--get' 'svn.localtime'
trace: built-in: git 'config' '--int' '--get' 'svn.repack'
trace: built-in: git 'config' '--get' 'svn.template'
trace: built-in: git 'config' '--get' 'svn.ignorepaths'
trace: built-in: git 'config' '--bool' '--get' 'svn.minimizeurl'
trace: built-in: git 'config' '--get' 'svn.rewriteroot'
trace: built-in: git 'config' '--bool' '--get' 'svn.quiet'
trace: built-in: git 'config' '--int' '--get' 'svn.logwindowsize'
trace: built-in: git 'config' '--get' 'svn.shared'
trace: built-in: git 'config' '--get' 'svn.configdir'
trace: built-in: git 'config' '--bool' '--get' 'svn.addauthorfrom'
trace: built-in: git 'config' '--bool' '--get' 'svn.noMetadata'
trace: built-in: git 'config' '--bool' '--get' 'svn.useSvnsyncProps'
trace: built-in: git 'config' '--bool' '--get-all' 'svn.tags'
trace: built-in: git 'config' '--get' 'svn.trunk'
trace: built-in: git 'config' '--bool' '--get' 'svn.uselogauthor'
trace: built-in: git 'init'
Initialized empty Git repository in /Users/km/workspace-supose/git/B_0.7.1/.git/
trace: built-in: git 'config' '--bool' 'svn.useSvmProps'
trace: built-in: git 'config' '-l'
trace: built-in: git 'config' '--get' 'svn-remote.svn.url'
trace: built-in: git 'config' '-l'
trace: built-in: git 'config' 'svn-remote.svn.url' 'http://svn.supose.org/supose/branches/B_0.7.1'
trace: built-in: git 'config' '--add' 'svn-remote.svn.fetch' ':refs/remotes/git-svn'
trace: built-in: git 'config' '--bool' 'svn.useSvmProps'
trace: built-in: git 'config' '-l'
trace: built-in: git 'config' '--get' 'svn-remote.svn.fetch' ':refs/remotes/git-svn$'
trace: built-in: git 'config' '--get' 'svn-remote.svn.url'
trace: built-in: git 'config' '--get' 'svn-remote.svn.uuid'
trace: built-in: git 'config' 'svn-remote.svn.reposRoot' 'http://svn.supose.org/supose'
trace: built-in: git 'config' '--get' 'svn-remote.svn.usesvmprops'
trace: built-in: git 'config' '--add' 'svn-remote.svn.uuid' 'd38d36a4-06d2-11df-b1fb-6b773c2c1a53'
W: Ignoring error from SVN, path probably does not exist: (160013): Filesystem has no item: '/supose/!svn/bc/100/branches/B_0.7.1' path not found
W: Do not be alarmed at the above message git-svn is just searching aggressively for old history.
This may take a while on large repositories
trace: built-in: git 'config' '--get' 'svn-remote.svn.nometadata'
trace: built-in: git 'config' '--get' 'svn-remote.svn.followparent'
trace: built-in: git 'config' '--bool' '--get' 'svn.brokenSymlinkWorkaround'
trace: built-in: git 'config' '--get' 'svn-remote.svn.ignore-paths'
trace: built-in: git 'update-index' '-z' '--index-info'
trace: built-in: git 'config' 'svn-remote.svn.reposRoot' 'http://svn.supose.org/supose'
error: git-svn died of signal 10

2 个答案:

答案 0 :(得分:2)

一个好的起点是将GIT_TRACE环境变量设置为1.我是一个git用户,而不是SVN用户,所以我不确定你的确切问题是什么,但它会给你更多详细程度。

更新:我一直在阅读更多文档,在我看来,您可能无法仅克隆一个分支本身;你可能只能克隆至少一个主干和感兴趣的分支。通过查看文档,看起来分支是SVN中的二等公民与中继相比,而不是git,其中分支更加模块化。老实说,最容易做的就是克隆整个回购。

但如果你真的不想要,你可能会一起破解解决方案:

git svn init --stdlayout http://svn.supose.org/supose

然后在repo中编辑.git / config,如下所示:

[svn-remote "supose"]
        url = http://svn.supose.org/supose
        fetch = trunk:refs/remotes/trunk
        branches = branches/B_0.7.1:refs/remotes/branches/*

然后git svn fetch

这是在黑暗中拍摄的,但它可能会起作用。

更新2:好的,那么多(见下面的评论)。丹的建议似乎最好;但是如果你想从脚本中挤出更多信息,那么运行git --exec-path来找到你的git命令可执行文件。然后将-d选项添加到git-svn的第一行(即#!/usr/bin/perl变为#!/usr/bin/perl -d)。这可能会揭示故障发生的确切位置。只要记得在完成它之后将其删除!

答案 1 :(得分:2)

git-svn实际上是一个Perl脚本。 git可执行文件本身只是一个启动其他程序的程序。 "died of signal"消息来自git启动器。信号10通常是 SIGBUS。这可能意味着很多事情:

  • Perl存在问题
  • Subversion Perl绑定存在问题
  • Subversion客户端存在问题

这也可能意味着您遇到了git-svn中的错误,但似乎高度不太可能(Perl脚本中的错误永远不会导致Perl出现总线错误。)

我会检查上述所有版本并验证它们是否完全兼容。