当我运行git svn clone时,我收到以下错误:
0 [main] perl 24432 cygwin_exception::open_stackdumpfile: Dumping stack trace to perl.exe.stackdump fatal: malformed index info 100644 362f1c18ceed5d593eb021432545685283a93
当我打开文件时,我看到以下内容:
异常:rip = 0048360C537时的STATUS_ACCESS_VIOLATION rax = 00000006039F81E0 rbx = 000000005219E248 rcx = 000000060003A3C0 rdx = 0000000000000000 rsi = 000000000000FDB4 rdi = 0000000000000004 r8 = 0000000000000000 r9 = 0000000000000000 r10 = 0000000000230000 r11 = 000000048D785FBA r12 = 0000000000000003 r13 = 000006FFFF7FEDB8 r14 = 00000006014D4030 r15 = 000006FFFF7FEDD0 rbp = 000000000007EDA8 rsp = 000000000022BE80 program = C:\ Program Files \ Git \ usr \ bin \ perl.exe,pid 24432,thread main cs = 0033 ds = 002B es = 002B fs = 0053 gs = 002B ss = 002B
我检查了以下链接:
Problem cloning a single SVN Branch via git svn
Python SVN bindings for Windows
subversion python bindings documentation?
不幸的是,我对底层技术不够熟悉,无法弄清楚我应该做些什么。可能会导致这种情况,我怎么能够解决?
答案 0 :(得分:19)
使用svn2git工具将巨大的svn存储库迁移到git时出现此错误。我在.git / config文件中添加了以下行,它开始工作:
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
hideDotFiles = dotGitOnly
packedGitLimit = 256m
packedGitWindowSize = 256m
longpaths = true
[http]
postBuffer = 524288000
[pack]
deltaCacheSize = 256m
packSizeLimit = 256m
windowMemory = 1024m
这些设置在git-config man page解释。
答案 1 :(得分:13)
更新:用2.11.0和git-svn 1:2.11.0-2ubuntu0.2更新到Ubuntu 17.04后,克隆工作完美无缺。
在通过perl脚本进行调试时,我发现了一个有趣的解决方案:
git svn
来减慢或以某种方式操纵执行。使用以下命令启动git svn fetch
(您可能必须更改路径。这也适用于克隆)。确保在git repository /目录中运行命令:
perl -d /usr/lib/git-core/git-svn fetch
在调试器中输入以下内容,然后按 ENTER :
b /usr/share/perl5/Git/SVN/Fetcher.pm:368 $base==undef or $dup==undef
这基本上会在我得到信号11的位置添加条件断点。这是代码行:
[ SVN::TxDelta::apply($base, $dup, undef, $fb->{path}, $fb->{pool}) ];
然后输入c
继续执行,然后按 ENTER 。
有人可以解释为什么这有帮助吗?
编辑:它有效:213000个修订版和1780个分支克隆到git中!
答案 2 :(得分:6)
I had similar exceptions and error messages, for me a
git gc
and/or a
git svn gc
brought the repository back into a usable state. See also https://stackoverflow.com/a/1436386/411846
答案 3 :(得分:4)
提交由git svn clone
命令输出,前面带有 r 。输出的最后一次提交是有问题的。
下一个示例显示了开始处理 Subversion修订 git svn clone
时15
命令输出的内容 Git提交 373fb1...
:
r15 = 373fb1de430a6b1e89585425f276aae0058c3deb (refs/remotes/svn/trunk)
git svn clone
(修订版)选项-r
命令
使用此方法:
git svn clone -r 0:<problematic_revision - 1> <repo URL>
git svn clone -r <problematic_revision - 1>:problematic_revision <repo URL>
git svn clone -r <problematic_revision>:HEAD <repo URL>
假设修订版15
是有问题的,而/tmp/svn/repo/
中的回购,解决方案是:
git svn clone -r 0:14 file:///tmp/svn/repo/
git svn clone -r 14:15 file:///tmp/svn/repo/
git svn clone -r 15:HEAD file:///tmp/svn/repo/
答案 4 :(得分:3)
已更新 - git gc对我来说问题仍然存在。我尝试了每个版本的git windows(32位和64位),但我仍然遇到了这个错误。然后我切换到在linux上使用git,它对我来说很好,即使是非常大的提交。我建议切换到linux,否则你运气不好,因为这里提出的问题 - https://github.com/git-for-windows/git/issues/274差不多6个月了。
已更新 - 要添加到centic的答案,git gc
仅适用于Windows的32位git,针对此特定问题。
我认为64位git for windows存在问题。我在使用64位git时遇到了同样的问题,但在切换到32位的git 2.7.2窗口后,问题似乎已经解决了。
答案 5 :(得分:2)
对我来说,唯一有效的解决方案是使用旧版本的Git。 我使用了Git 1.8.3的便携包,可以在这里下载:
https://github.com/msysgit/msysgit/releases/tag/Git-1.8.3-preview20130601
使用它不需要.git / config编辑,拆分检出或perl调试语句。
答案 6 :(得分:2)
我在git-svn中遇到了各种各样的错误,其中perl脚本会在各个地方死掉,抓取会中断,或者服务器会切断连接。这是一个巨大的回购,当通过svn签出时需要几十GB。
为我解决这个问题只是使用SmartGit而不是git-svn。它需要Java 8,运行速度极快,并且没有任何错误报告,几个小时内无缝完成了几天的任务。
答案 7 :(得分:2)
这是我遇到的问题:
跟踪来自perl -d /usr/lib/git-core/git-svn fetch
的信息:
Signal SEGV at /usr/local/share/perl/5.22.1/Git/SVN/Fetcher.pm line 368
Git::SVN::Fetcher::apply_textdelta(Git::SVN::Fetcher=HASH(0x20ee160), HASH(0x2488a40), undef, _p_apr_pool_t=SCALAR(0x2488bf0)) called at /usr/lib/x86_64-linux-gnu/perl5/5.22/SVN/Ra.pm line 623
SVN::Ra::Reporter::AUTOLOAD(SVN::Ra::Reporter=ARRAY(0x8d0fa0), SVN::Pool=REF(0x20ee910)) called at /usr/local/share/perl/5.22.1/Git/SVN/Ra.pm line 308
Git::SVN::Ra::gs_do_update(Git::SVN::Ra=HASH(0x20df170), 42560, 42560, Git::SVN=HASH(0x20dea08), Git::SVN::Fetcher=HASH(0x20ee160)) called at /usr/local/share/perl/5.22.1/Git/SVN.pm line 1205
Git::SVN::do_fetch(Git::SVN=HASH(0x20dea08), HASH(0x20ee1d8), 42560) called at /usr/local/share/perl/5.22.1/Git/SVN/Ra.pm line 471
Git::SVN::Ra::gs_fetch_loop_common(Git::SVN::Ra=HASH(0x20df170), 42500, 95400, ARRAY(0x1637c08), ARRAY(0x1637c20)) called at /usr/local/share/perl/5.22.1/Git/SVN.pm line 179
Git::SVN::fetch_all("svn", HASH(0x20dee28)) called at /usr/lib/git-core/git-svn line 570
main::cmd_fetch() called at /usr/lib/git-core/git-svn line 386
eval {...} called at /usr/lib/git-core/git-svn line 384
Aborted (core dumped)
我最终通过以下步骤解决了这个问题(这适用于Ubuntu Linux 16.04用户):
sudo apt build-dep subversion
sudo apt install libneon27-dev
sudo cpan SVN::Core
然后我可以使用git svn fetch/clone
而不会发生任何崩溃。
此问题的根本原因是Perl SVN :: Core库脚本与Perl中安装的二进制文件不匹配(在系统安装的Perl旁边安装了单独的subversion二进制文件)。
请注意,这会将你的git-svn的svn版本降级到1.8.11(在它的1.9.3之前),并可能导致其他问题。
答案 8 :(得分:1)
我能够使用Cygwin正确检查svn repo。
答案 9 :(得分:1)
在我的情况下,我没有连接到我们的VPN,这是我们的svn连接所需要的。这是我的错误:
Exception: STATUS_ACCESS_VIOLATION at rip=00000000000
rax=0000000000000000 rbx=00000006010BBDA8 rcx=00000006010BBDA8
rdx=00000006010C40E8 rsi=0000000000000011 rdi=0000000000000000
r8 =0000000000000000 r9 =00000006010EBCA8 r10=0000000100000000
r11=000000049F2423C9 r12=00000000FFFFC190 r13=00000000FFFFC198
r14=00000006010B2DF8 r15=00000006010B2D68
rbp=00000000FFFFC1A8 rsp=00000000FFFFC138
program=C:\Program Files\Git\usr\bin\perl.exe, pid 7884, thread main
cs=0033 ds=002B es=002B fs=0053 gs=002B ss=002B
Stack trace:
Frame Function Args
End of stack trace
答案 10 :(得分:0)
在我的情况下,这个错误发生在大型存储库中。因此,如果可能的话,尝试克隆子文件夹。
答案 11 :(得分:0)
我每次都可以重现这个问题,而git svn在
中完美无缺版本1.9.5
您可以从
的Git-1.9.5-preview20141217.exe安装它https://github.com/msysgit/msysgit/releases/tag/Git-1.9.5-preview20141217
我想知道是否有人可以检查旧版本1.9.5和当前版本之间的差异(从msysgit迁移到此处之后)
将旧版本用于git是很痛苦的,因为git svn在新版本中无法正常工作。
答案 12 :(得分:0)
在我的情况下,这个错误发生在Ubuntu 16.04,版本是 git-svn版本2.17.0(svn 1.9.3)在我运行git svn --version
命令后,我切换到我运行git svn --version
命令后,我的MacOS版本信息是 git-svn版本2.17.0(svn 1.7.20),然后在成功克隆后再切换回ubuntu&amp;在MacOS中获取和其他操作。
答案 13 :(得分:0)
在C:\ Program Files \ Git \ usr \ bin中执行rebase.exe为我解决了该问题。我在这里https://github.com/msysgit/msysgit/issues/25
找到了解决方案答案 14 :(得分:0)
如果必须通过文件中的http / https代理需要配置代理来访问SVN存储库
c:\ Users \ ... \。subversion \ servers。
在[global]部分中设置http-proxy-host和http-proxy-port。
来自
的解决方案https://www.bountysource.com/issues/25711817-perl-crash-during-svn-clone
答案 15 :(得分:0)
对我来说,代理设置修复了它。也可以看看: https://github.com/git-for-windows/git/issues/274#issuecomment-473826553
在 C:\Users\USERNAME\.subversion\servers
组内
[global]
http-proxy-host = [insert IP here]
http-proxy-port = [insert port here]