【问题标题】:git svn clone: branches moved from repo/ to repo/branches/ and "Malformed XML: no element found"git svn clone:分支从 repo/ 移动到 repo/branches/ 和“格式错误的 XML:找不到元素”
【发布时间】:2016-05-17 14:12:17
【问题描述】:

在 Cygwin 下使用 git 2.8.2 和 svn 1.9.4,当使用 git svn clone 克隆我们的存储库时,我在某个提交时遇到了难题:

r3640 = eb94... (refs/remotes/svn/trunk)
Found possible branch point: https://.../repo/<branchname> => https://.../repo/branches/<branchname>, 3641
Initializing parent: refs/remotes/svn/<branchname>@3641
Error from SVN, (175009): Malformed network data: The XML response contains invalid XML: Malformed XML: no element found

观察#1:当使用-r3600:HEAD 进行克隆时,即从足够近的提交中,操作成功。繁琐的实验表明,当从有问题的提交之前的大约 100 个修订开始克隆时,就会出现问题。

观察 #2:这似乎只发生在上述形式的分支中:错误地在 repo 根 repo/&lt;branchname&gt; 中创建,然后移动到 repo/branches/&lt;branchname&gt;

问题是什么以及如何解决?

【问题讨论】:

    标签: svn git-svn


    【解决方案1】:

    解决方案:放大您的 --log-window-size 值(默认值:100)。

    警告:较大的窗口大小会阻止获取包含许多新添加文件的提交:

    • 在提交 3961 个新文件后,7000 的窗口大小反复失败
    • 在提交 4927 个新文件后,窗口大小为 4000 失败

    在受影响的提交中实际上有 8430 个新文件。

    这一切都在 Cygwin 下,我无法在 Linux 上重现这些问题,所以你的里程可能会有所不同。


    我注意到观察到的导致错误的修订距离与git svn fetch --log-window-size 选项的默认值之间存在相似之处:两者都是 100。

    使用 4000 的日志窗口解决了我的问题,others 使用了更大的值来加速初始克隆/获取操作。

    我已经通过从有问题的修订之前的 10 个修订中克隆并使用 --log-window-size=1 来验证问题 - 它再次失败。

    知道这是 git-svn 方面的预期行为还是错误会很有趣,因为 --log-window-size 被记录以加速克隆/获取操作,而不是修复某些分支问题的必要条件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-15
      • 2018-12-10
      • 2021-09-19
      • 2011-05-26
      • 1970-01-01
      • 2021-07-30
      • 1970-01-01
      相关资源
      最近更新 更多