使用git svn克隆单个SVN分支的问题

3
我曾尝试在我的SVN仓库上使用以下命令,通过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

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

更新: 我通过环境变量打开了跟踪功能。尝试了一下,但结果失败了。升级到了同样的结果为1.7.2的git版本。

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

1
更新了GIT和SVN绑定后,现在它可以正常工作了。谢谢。 - khmarbaise
2个回答

2
一个很好的起点是将GIT_TRACE环境变量设置为1。我是一个git用户,不是一个SVN用户,所以我不确定你的确切问题是什么,但它会给你更多的详细信息。
更新:我一直在阅读更多的文档,对我来说似乎您可能无法只克隆单个分支;您可能只能克隆主干和感兴趣的分支。从文档中看来,与git相比,分支在SVN中是二等公民,而不是更加模块化。老实说,最简单的方法可能是克隆整个仓库。
但如果您真的不想这样做,您可能可以拼凑出一个解决方案:
git svn init --stdlayout http://svn.supose.org/supose

然后在仓库中编辑.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命令可执行文件。然后在git-svn的第一行添加-d选项(即#!/usr/bin/perl变成#!/usr/bin/perl -d)。这可能会揭示故障发生的确切位置。只要完成后记得将其删除!


尝试克隆单个Subversion分支(或任何任意子目录)没有任何问题。它应该可以正常工作。 - Dan Moulding
谢谢,我不确定。感谢你指出了我不必要的追寻 :) 我很困惑为什么跟踪在 git config 期间似乎死了。也许我们应该看看它在 Perl 中进行到了哪个步骤。 - Vanessa Phipps

2
git-svn实际上是一个Perl脚本,git可执行文件只是一个启动其他程序的程序。 "died of signal"消息来自于git启动器。信号10通常是SIGBUS。这可能意味着以下几种情况之一:
  • Perl存在问题
  • Subversion Perl绑定存在问题
  • Subversion客户端存在问题

也有可能是你遇到了git-svn中的Bug,但这似乎极不可能(Perl脚本中的Bug不应该导致Perl总线错误)。

我建议检查以上所有工具的版本,并确保它们彼此兼容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接