FreeBSD svn2git aborting: potential workaround

Ed Maste emaste at freebsd.org
Wed Jan 4 22:25:15 UTC 2017


I'm trying to reproduce the svn2git conversion locally in order to
investigate nonreproducibility issues. I'm in the process of cloning a
local copy of the svn repository with svnsync, and am running uqs'
version of svn2git (obtained from
http://svn.freebsd.org/base/user/uqs/git_conv) against that.

Initially svn2git was aborting on me:

Exporting revision 70017 ....... 7 modifications from SVN /head/ to
freebsd-base.git/master done
Exporting revision 70018 . 1 modifications from SVN /head/ to
freebsd-base.git/master done
Exporting revision 70019 ...... 6 modifications from SVN /stable/4/ to
freebsd-base.git/stable/4 done
Exporting revision 70020 . 1 modifications from SVN /head/ to
freebsd-base.git/master done
Exporting revision 70021 . 1 modifications from SVN /stable/4/ to
freebsd-base.git/stable/4 done
Exporting revision 70022 .............Failed to write to process:
Error writing to process
Abort trap (core dumped)

When restarting from an empty git repo it aborted after the same revision.

When this happens more detailed information is emitted in the
log-freebsd-base.git logfile:

progress SVN r70019 branch stable/4 = :70720
progress SVN r70020 branch master = :70721
error: failed to apply delta
fatal: Can't load tree 7d74bacb97098f62f3df6c00dea2ca477526c5b6
fast-import: dumping crash report to fast_import_crash_27754

And the referenced fast_import_crash_27754 has a lot more information
in it, although it was not helpful to me in trying to take the problem
to root cause.

I did find that adding "--commit-interval 10" to the svn2git
command-line avoided the abort, and also cleared up a diverging git
hash between the official mirror and my local clone. In the official
mirror r17572 is f7b4db0557177ace5810a3905ec4eaea478862b2; in my clone
it was 9aec003234685887537aeda5d6408cb54d2a066f, but trying to show
that hash resulted in:
% git show 9aec003234685887537aeda5d6408cb54d2a066f
error: failed to apply delta
error: failed to read object b7e21351967a525e1e4146ab43a981d0ddf34d71
at offset 117543675 from
./objects/pack/pack-c4fb2c8279432e4e8701c0b35df7cce79a96fa1d.pack
fatal: packed object b7e21351967a525e1e4146ab43a981d0ddf34d71 (stored
in ./objects/pack/pack-c4fb2c8279432e4e8701c0b35df7cce79a96fa1d.pack)
is corrupt

It seems to me that git is at least partially at fault here. With the
default settings (i.e., no --commit-interval) either svn2git is
generating valid fast-import data and git is responsible for the
failure, or svn2git is generating invalid data and git is doing
insufficient validation.

"--commit-interval 10" may be overly conservative (I think the default
is 1000), but it seems to be an effective workaround until we can take
this to root cause.


More information about the freebsd-git mailing list