在Cygwin下,git svn clone因信号11而死亡

11

我在cygwin下使用git svn时遇到了问题。

user@comp /cygdrive/c/repositories/git/repo $git svn clone --username=username "https://host/svn/repos/repo" .
Initialized empty Git repository in /cygdrive/c/repositories/git/repo/.git/
error: git-svn died of signal 11

如何处理这个问题?

user@comp ~ $svn --version
svn, version 1.6.15 (r1038135)
   compiled Nov 29 2010, 14:09:28

user@comp ~ $git --version
git version 1.7.4

你在CentOS 4.8上遇到了同样的问题吗?你尝试过在简单的Perl脚本中使用SVN::Client吗? - Elazar Leibovich
我有git版本1.7.9-rc1svn版本1.8.5(r1542147)perl --version显示 This is perl 5, version 14, subversion 2 (v5.14.2) built for cygwin-thread-multi-64int (with 7 registered patches, see perl -V for more detail). 这是镜像“mirrors.kernel.org”的最新版本。 下一个命令perl -e 'require SVN::Core; print "$SVN::Core::VERSION\n"'成功执行。 但是git svn fetchgit svn rebase仍然显示error: git-svn died of signal 11。 我还能尝试做什么? - wwarlock
好的,我已经将Subversion降级到1.7.14,然后出现了一个错误,如下:perl unable to remap cygsvn_client-1-0.dll to same address as parent - try running rebaseall。 我退出了Cygwin,启动了ash,然后在我的工作目录中执行了rebaseall(但是可能可以在启动ash后立即运行)。 我重新启动了cygwin,然后git svn rebase完成了所有工作而没有错误。 也许在rebaseall之后,新版本的svn也能正常工作,但我现在没有时间测试它。 - wwarlock
5个回答

11

我在这里找到了一个好的技巧:
http://pwizardry.com/devlog/index.cgi/2010/03/29#svn2git

如果你切换到新的存储库并输入以下命令
git svn fetch
它将从上次终止的地方继续执行。

我遇到了相同的问题,这个解决方案似乎对我有效。


3
我曾经为这个问题奋斗了5个小时。我试图使用cygwin中的git。但不幸的是... 这个“hucking”
git-svn died signal 11

在尝试执行时

git svn clone http://repo.com/path/to/my/repo.git -s

我真的很生气......在工作场所完成工作后,我还需要做这件事......:) 我们使用代理从我们的网络连接到svn存储库。我尝试了rebaseall...在互联网上搜索解决方法...但不幸的是没有成功...

所以我决定,我要解决这个问题!

我放假时去了一趟工作地点,并做了以下事情:

  • Remove git package from my cygwin.
  • Remove any another git installation from my windows environment (like tortoisegit)
  • Download and install msysgit (http://msysgit.github.io/)
  • Install it.
  • Configure git to use proxy as below.
  • Run cmd.
  • execute git config --global http.proxy http://my.proxy.com:8080
  • Now we need to configure svn to use proxy when you run git svn clone. Or else you will get this error:

    RA layer request failed: PROPFIND request failed on '/svn/repos/my-project': PROPFIND of '/svn/repos/my-project': could not connect to server (https://my.svn.repository.behinde.proxy.com) at /usr/lib/perl5/site_perl/Git/SVN.pm line 310    
    

这是一些棘手的问题。为了解决它,我们需要编辑位于home文件夹中的/.subversion/servers文件,而不是%appdata%\.subversion\servers或者c:\users\userlogin\.subversion\servers。您需要按照以下步骤进行操作:

  • run git bash (that you have after installing msysGit) from

    "Start" -> all programms -> git -> Git bash.`
    

这是一个链接,指向在我电脑上的 "C:\Program Files (x86)\Git\bin\sh.exe" --login -i

  • Now you need execute "cd" command.
  • Now do

    ls -al
    

    look for .subversion folder

  • And now edit file under this folder vi .subversion/servers you need to find section [groups] and add your server to what you want to made proxy connection for example:

    [groups]
        myserver = www.some.server.com
    
  • Now in same file add strings like this:

    [myserver]
        http-proxy-host = http[or https]://[login:password_to_proxy@]my.proxy.com
        http-proxy-port = 8080your proxy port
    
例如:

举个例子:

    [myserver]
        http-proxy-host = http://my.proxy.com
        http-proxy-port = 8080

现在你已经配置好了所需的一切(我希望如此 :)) 现在,您可以运行命令提示符并执行git svn clone https://your.repository.com/path/to/repo -s

并使用 git svn 轻松地处理 svn。:)


谢谢。这个救了我的一天,因为在公司环境中.subversion\server位于%HOMESHARE%下,但在独立的Windows安装中则位于%USERPROFILE%下。而Git bash知道在哪种情况下查找。 - Jeroen Wiert Pluimers
什么?你执行“cd”命令进入你的用户主目录。 - Pasha

1
尝试运行perl -e 'require SVN::Core; print "$SVN::Core::VERSION\n"'。这应该在您的情况下打印出'1.6.15'。如果它输出错误,那可能意味着您没有安装perl SVN模块。尝试在cygwin中安装'subversion-perl'软件包。

user@comp $perl -e 'require SVN::Core; print "$SVN::Core::VERSION\n"' 1.6.15 - kingoleg
perl -e 'require SVN::Core; print "$SVN::Core::VERSION\n"' 给我返回了分段错误。但是将代码写入.pl文件中,然后执行perl脚本会输出'1.6.11'。我想这应该没问题吧。是吗? - Ninad

0

看起来 git-svn 会崩溃并显示 分段错误(这可能表示软件存在漏洞)。git-svn 可执行文件只是一个普通的 Perl 脚本,因此要修复它,您有以下几种可能性:

  • 升级perl并确保它使用新版本,
  • 尝试将git-svn二进制文件的shebang更改为升级后的perl
  • 重新安装subversion以使用升级后的perl绑定:

    • OS X:brew reinstall subversion --with-perl然后brew link --overwrite subversion
    • Linux:apt-get install git-svn libsvn-perl
  • 查找其他不会崩溃的git-svn并使用它们,例如:

    which -a git-svn
    locate git-svn | grep git-svn$
    

如果你使用的是OS X系统,可以在这里查找更多的想法。


0
在我的情况下,这是由于无法访问存储库造成的。
我不得不添加我的代理设置到~/.subversion/servers,让svn能够检出存储库。

检查SVN/Subversion代理设置真的很值得,这解决了我的问题。 - Christian Müller

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