Git svn clone:错误格式错误的XML后是否可以恢复:没有找到元素?

时间:2016-09-23 13:21:58

标签: git svn git-svn

我正在尝试使用git svn使用以下命令从Subversion到Git迁移大型subversion存储库的单向操作(仅在迁移后使用Git将使用GORT):

git svn clone --no-minimize-url --trunk=/trunk/GBI --branches=/branches/GBI --tags=/tags/GBI --authors-file=authors.txt https://yyy/svn-repos/zzz/ GBI

运行几个小时后,克隆进程崩溃并出现以下错误:

r79791 = 00349b8063f90447ea8a040751cd2a40e74b74f3 (refs/remotes/origin/trunk)
Error from SVN, (175009): Malformed network data: The XML response contains invalid XML: Malformed XML: no element found

然后我想也许有一种聪明的方法可以在违规修订之后立即恢复这个过程......这可能吗?

首先是什么原因造成了这个错误?

The answer to this question建议使用--log-window-size来防止此问题首先发生...我可以添加该选项并从失败的修订版重试吗?是这个问题然后git svn内存使用问题或仅与损坏的颠覆修订版连接的问题?

是否有git svn option来强制进程忽略错误,而不仅仅是因为此错误而停止冗长的进程?

更新:我在Atlassian Stash Migrating to Git guide之后到达此点,表示正在使用git svn及其svn-migration-scripts.jar实施

2 个答案:

答案 0 :(得分:0)

我最近有

Error from SVN, (175009): Malformed network data: The XML response contains invalid XML: Malformed XML: unclosed token

几乎相同,并且在注释中由Mykola Gurov提到的由git clone创建的存储库文件夹中执行git svn fetch,并在发生错误的修订版本上继续执行并一直运行到上一个SVN版本

答案 1 :(得分:-2)

svn2git 是用于存储库或存储库部件的一次性转换的正确工具。如果您想将Git用作现有SVN服务器的前端,这是一个很棒的工具,但对于一次性转换,您应该使用svn2git,但svn2git是更适合这种用例。

有一些称为svneverever的简单工具,最好的工具是来自https://github.com/svn-all-fast-export/svn2git的KDE工具。我强烈建议您使用svn2git工具。这是我所知道的最好的,它可以非常灵活地使用它的规则文件。

如果您不是100%关于存储库的历史记录,那么http://blog.hartwork.org/?p=763中的git-svn是一个很好的工具,用于在将SVN存储库迁移到Git时调查其历史记录。

尽管git-svn更容易入手,但除了灵活性之外,以下是使用KDE svn2git代替git-svn优于其他原因的一些原因:

  • 历史由fetch重建得更好更清洁(如果使用了正确的历史记录),对于更复杂的分支和合并历史记录来说尤其如此,等等
  • 标签是真正的标签,而不是Git中的分支
  • 使用--tags标记包含一个额外的空提交,这也使它们不属于分支,因此正常svn2git将不会获得它们,直到您将git-svn作为命令提供给默认情况下,仅提取指向已获取分支的标记。正确的svn2git标签是他们所属的地方
  • 如果您在SVN中更改了布局,则可以使用svn2git轻松配置,svn2git最终会丢失历史记录
  • 使用git-svn您还可以轻松地将一个SVN存储库拆分为多个Git存储库
  • 或将同一SVN根目录中的多个SVN存储库轻松组合到一个Git存储库中
  • 使用正确git-svn比使用svn2git
  • ,转化速度快了数十倍

INSERT INTO #SCRPTS SELECT getdate(), 'INSERT WKF_TpProcesso VALUES (''' + Des_TpProcesso + ''',' + cast(Cod_Func as Varchar(8)) + ',getdate() ,null ,1 ,' + CASE WHEN Id_Sistema IS NULL THEN 'Null' ELSE CAST(Id_Sistema as Varchar(6)) END +',0,1,0,'+ CASE WHEN Des_CodigoTpProcesso IS NULL THEN 'Null' ELSE '''' + Des_CodigoTpProcesso END +''''+ ','+CAST(Flg_ProxProcesso as Varchar(1))''')' FROM WKF_TpProcesso WHERE Des_CodigoTpProcesso = @Des_CodigoTpProcesso 更糟糕且KDE INSERT WKF_TpProcesso VALUES ('Processo Teste',41815,getdate() ,null ,1 ,169,0,1,0, 'PcTestPlus',1) 优越的原因有很多。 : - )