我一直在努力让Git迁移的Subversion版本在公司IT管理的Red Hat 6.4linux工作站上运行。我们的IT部门通过在本地工作站上的“/apps”目录下安装,提供了他们认为我们需要的大多数OTS包的几个版本。我没有根或sudo在我的盒子上,否则这可能会更容易。在一些博客文章(如this one)之后,尝试设置我的路径和LD_LIBRARY_PATH correclty,我已经成功地完成了git svn init <my/svn/path>,但是运行git svn fetch会产生如下错误:

Can't load '/apps/subversion_1.9.4/lib/site_perl/5.14.2/x86_64-linux-thread-multi-ld//auto/SVN/_Core/_Core.so' for module SVN::_Core:
/apps/subversion_1.9.4/lib/site_perl/5.14.2/x86_64-linux-thread-multi-ld//auto/SVN/_Core/_Core.so:
undefined symbol: svn_swig_pl_thunk_config_enumerator at /usr/lib64/perl5/DynaLoader.pm line 200.

at/apps/subversion_1.9.4/lib/site_perl/5.14.2/x86_64-linux-thread-multi-ld//SVN/Base.pm第59行
开始失败--编译在/apps/subversion_1.9.4/lib/site_perl/5.14.2/x86_64-linux-thread-multi-ld//SVN/Core.pm第5行中止。
我已经追踪到包含这个符号的库(似乎这可能是编译路径的问题)是libsvn_swig_perl-1.so。我将bash中的LD_PRELOAD env变量设置为指向该库的路径,但是运行git svn fetch会产生一个新的错误:
/apps/git_2.9.3/bin/git: symbol lookup error:
/apps/subversion_1.9.4/lib/libsvn_swig_perl-1.so: undefined symbol: PL_thr_key

我还不能成功地找到“PL_thr_key”来自哪个包和库。有什么提示可以让我获得依赖项的完整列表(或者至少定义了PL_thr_key)来完成svn到git的迁移吗?

最佳答案

对于一次性迁移,git-svn不是转换存储库或存储库部分的正确工具。如果您想使用Git作为现有的VPN服务器的前端,这是一个很好的工具,但是对于一次性转换,您不应该使用git-svn,但是svn2git它更适合这个用例。
有很多称为svn2git的工具,最好的可能是https://github.com/svn-all-fast-export/svn2git中的KDE工具。我强烈建议使用svn2git工具。这是我所知道的最好的,在它的规则文件中,它是非常灵活的。
您可以轻松地配置svn2gits规则文件,从当前SVN布局生成所需的结果,包括任何可能存在的复杂历史,包括从一个VPN回购中产生几个Git副本,或者在一个运行中将不同的SNN回购组合为一个GIT回购,如果您愿意,也排除任何不迁移的路径或分支或标记,但如果有人抛弃了宝贵的代码历史,我总是会哭。
如果您不是100%了解存储库的历史,svnevereverfromhttp://blog.hartwork.org/?p=763是一个很好的工具,可以在将SVN存储库迁移到Git时调查其历史。
尽管git-svn或NrvLultsvn2git更容易开始,但这里还有一些进一步的理由,为什么使用KDE svn2git而不是git-svn是优越的,除了它的灵活性:
通过svn2git(如果使用正确的方法)可以更好、更清晰地重建历史,对于分支和合并等更复杂的历史尤其如此
标记是真正的标记,而不是Git中的分支
可以生成带注释的标记,而不是轻量级标记
使用git-svn时,标记包含一个额外的空提交,这也会使它们不属于分支,因此正常的fetch在您将--tags交给命令之前不会获取它们,因为默认情况下,也只获取指向已获取分支的标记。有了合适的svn2git标签
如果您在SVN中更改了布局,您可以使用svn2git轻松配置它,使用git-svn您最终将丢失历史记录
使用svn2git还可以轻松地将一个SVN存储库拆分为多个Git存储库
或者将同一个SVN根目录中的多个SVN存储库轻松组合到一个Git存储库中
正确的svn2git比正确的git-svn转换快上百万倍
你看,git-svn更差,KDEsvn2git更优的原因有很多。:-)

关于linux - 为了正确运行,需要安装运行“git svn”的哪些依赖项?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48712773/

10-11 07:45