Hello,

I'm trying to convert an SVN repository to Git with "git-svn" and it dies 
with a seg fault.

# git svn --version
git-svn version 2.10.1 (svn 1.9.3)
#

I've narrowed the problem down to commit 18663 (and we have 22K revisions 
in the SVN repo).

# git svn clone -r 18663:18664  svn://myrepo.example.com/ 
--authors-file=authors.txt --no-metadata --trunk=myproject/trunk 
--tags=myproject/tags --branches=myproject/branches 
file:///home/aleksey/scratch/myproject/

The error is:

Index mismatch: 314e2ca82dcac3fc7a31668974ec1bbfe2ba0904 != 
60995aa26b6d5fd5056d7c1c278ab9fac4f0fa72
rereading 6edf00155e99771d6f8af9aeae5b2578a7f1db76
        A       file1
        A       file2
        A       file3
... [add a bunch more files]
Ignoring path
error: git-svn died of signal 11
#


Turn on GIT_TRACE:

22:37:17.322731 git.c:350               trace: built-in: git 'rev-list' 
'--pretty=raw' '--reverse' 
'6edf00155e99771d6f8af9aeae5b2578a7f1db76..refs/remotes/origin/JohnDeveloper' 
'--'
22:37:17.323466 git.c:350               trace: built-in: git 'config' 
'--get' 'svn-remote.svn.rewriteRoot'
22:37:17.325970 git.c:350               trace: built-in: git 'config' 
'--get' 'svn-remote.svn.rewriteUUID'
22:37:17.331451 git.c:350               trace: built-in: git 'config' 
'--get' 'svn-remote.svn.usesvmprops'
22:37:17.334047 git.c:350               trace: built-in: git 'config' 
'--get' 'svn-remote.svn.nometadata'
22:37:17.336422 git.c:350               trace: built-in: git 'config' 
'--bool' 'svn-remote.svn.nometadata'
22:37:17.339054 git.c:350               trace: built-in: git 'write-tree'
22:37:17.370642 git.c:350               trace: built-in: git 'cat-file' 
'commit' '6edf00155e99771d6f8af9aeae5b2578a7f1db76'
Index mismatch: 314e2ca82dcac3fc7a31668974ec1bbfe2ba0904 != 
60995aa26b6d5fd5056d7c1c278ab9fac4f0fa72
rereading 6edf00155e99771d6f8af9aeae5b2578a7f1db76
22:37:17.374140 git.c:350               trace: built-in: git 'read-tree' 
'6edf00155e99771d6f8af9aeae5b2578a7f1db76'
22:37:17.448099 git.c:350               trace: built-in: git 'write-tree'
22:37:17.460106 git.c:350               trace: built-in: git 'config' 
'--get' 'svn-remote.svn.followparent'
22:37:17.462909 git.c:350               trace: built-in: git 'config' 
'--bool' '--get' 'svn.brokenSymlinkWorkaround'
22:37:17.465511 git.c:350               trace: built-in: git 'config' 
'--get' 'svn-remote.svn.ignore-paths'
22:37:17.467963 git.c:350               trace: built-in: git 'config' 
'--get' 'svn-remote.svn.include-paths'
22:37:17.470431 git.c:350               trace: built-in: git 'config' 
'--get' '--bool' 'svn-remote.svn.preserve-empty-dirs'
22:37:17.472916 git.c:350               trace: built-in: git 'config' 
'--get-all' 'svn-remote.svn.added-placeholder'
22:37:17.475974 git.c:350               trace: built-in: git 'update-index' 
'-z' '--index-info'
22:37:17.476806 git.c:350               trace: built-in: git 'config' 
'--get' 'svn.pathnameencoding'
22:37:17.479570 git.c:350               trace: built-in: git 'config' 
'svn-remote.svn.reposRoot' 'svn://myrepo.example.com'
22:37:17.506685 git.c:350               trace: built-in: git 'hash-object' 
'-w' '--stdin-paths' '--no-filters'
        A       file1
        A       file2
        A       file3


Again, the error was:

Index mismatch: 314e2ca82dcac3fc7a31668974ec1bbfe2ba0904 != 
60995aa26b6d5fd5056d7c1c278ab9fac4f0fa72
rereading 6edf00155e99771d6f8af9aeae5b2578a7f1db76

6edf is a commit object:

# git cat-file -t 6edf00155e99771d6f8af9aeae5b2578a7f1db76
commit
#

Its contents:

# git cat-file -p 6edf00155e99771d6f8af9aeae5b2578a7f1db76
tree 314e2ca82dcac3fc7a31668974ec1bbfe2ba0904
parent ba36a400db2acdc441b3665428870a2d0ef48da6
author [redacted]
committer [redacted]

[redacted]
#

Finally, the second object mentioned in the error does not exist:

# git cat-file -t 60995aa26b6d5fd5056d7c1c278ab9fac4f0fa72
fatal: git cat-file: could not get object info
#

Where did git get 6099?

It wasn't from 6edf or 314e...

# git cat-file -p 314e2ca82dcac3fc7a31668974ec1bbfe2ba0904
040000 tree de2e3c37d310176d37316e29fafcc524f432a61b    [redacted]
040000 tree c87e8141209f655a9b21b251bdc52b7a17ace55d    [redacted]
040000 tree bb9b918e1f91adcfc04512b7ff2d5647104f654b    [redacted]
040000 tree ad127b602af7ff6de4e10fa391305966f72e53a7    [redacted]
040000 tree 458c21da5d8900f06df895c8ae8218693729cf07    [redacted]
040000 tree 0343c9b99e9e5266c53704fc8a53ae645945896c    [redacted]
#

I tried adding -d switch to git-svn, and now it dies with SIGABRT rather 
than SIGSEGV:

Signal SEGV at /opt/git-2.10.1/share/perl/5.22.1/Git/SVN/Fetcher.pm line 
368.
        
Git::SVN::Fetcher::apply_textdelta(Git::SVN::Fetcher=HASH(0x38cfeb8), 
HASH(0x3d4bbb0), undef, _p_apr_pool_t=SCALAR(0x3d42bd8)) called at 
/usr/lib/x86_64-linux-gnu/perl5/5.22/SVN/Ra.pm line 623
        SVN::Ra::Reporter::AUTOLOAD(SVN::Ra::Reporter=ARRAY(0x3902200), 
SVN::Pool=REF(0x39021d0)) called at 
/opt/git-2.10.1/share/perl/5.22.1/Git/SVN/Ra.pm line 312
        Git::SVN::Ra::gs_do_update(Git::SVN::Ra=HASH(0x383f428), 7979, 
18664, Git::SVN=HASH(0x3884148), Git::SVN::Fetcher=HASH(0x38cfeb8)) called 
at /opt/git-2.10.1/share/perl/5.22.1/Git/SVN.pm line 1210
        Git::SVN::do_fetch(Git::SVN=HASH(0x3884148), HASH(0x38c91c0), 
18664) called at /opt/git-2.10.1/share/perl/5.22.1/Git/SVN/Ra.pm line 475
        Git::SVN::Ra::gs_fetch_loop_common(Git::SVN::Ra=HASH(0x383f428), 
18663, 18664, ARRAY(0x2d78830), ARRAY(0x2d78848)) called at 
/opt/git-2.10.1/share/perl/5.22.1/Git/SVN.pm line 184
        Git::SVN::fetch_all("svn") called at 
/opt/git-2.10.1/libexec/git-core/git-svn line 525
        main::cmd_clone("svn://myrepo.example.com/", 
"file:///home/aleksey/scratch/myproject/") called at 
/opt/git-2.10.1/libexec/git-core/git-svn line 386
        eval {...} called at /opt/git-2.10.1/libexec/git-core/git-svn line 
384
Ignoring path
error: git-svn died of signal 6

Line 368 of "/opt/git-2.10.1/share/perl/5.22.1/Git/SVN/Fetcher.pm" is:
        [ SVN::TxDelta::apply($base, $dup, undef, $fb->{path}, $fb->{pool}) 
];

I tried running "git gc" and "git svn gc" as one of the answers in 
http://stackoverflow.com/questions/32465621/git-svn-clone-malformed-index-info-error
 
suggested.  (I was getting "malformed index error" with git-2.9.2 before I 
updated to latest stable version of git.)

I also tried adding the conditional break point using the perl debugger, as 
suggested on the the same stackoverflow page.

I'm out of my depth and out of ideas...  any suggestions, please?

I should mention this SVN repository contains multiple project, and I'm 
just trying to convert one... (the main one).

-- 
You received this message because you are subscribed to the Google Groups "Git 
for human beings" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to git-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to