【问题标题】:git svn clone failed due to Svndiff backward-sliding source view由于 Svndiff 向后滑动源视图,git svn clone 失败
【发布时间】:2014-07-23 07:30:01
【问题描述】:

我正在将 svn 存储库迁移到 git,使用 git svn clone,然后将克隆推送到远程源以充当新的 git 存储库。

到目前为止,我已经成功迁移了 34 个 svn repos,但是在 git svn clone 过程中,有 4 个由于以下错误而失败

命令:

git svn clone --authors-file=authors.txt svn+ssh://git@server/path/to/SVN/project/trunk/repo_name repo_name.git

导致错误:

Svndiff data contains backward-sliding source view: Svndiff has backwards-sliding source views at /usr/libexec/git-core/git-svn line 5061

以前有没有人遇到过这个错误并找到解决方法,要么强制 git svn clone 忽略错误并继续,要么先修复 SVN repo?

我可能应该为这个问题添加更多背景知识。 我被指出了各种工具的方向来协助 svn 到 git 的迁移,但不幸的是,其中大多数是单向转换,不适合这项任务。

我有大约 100 个单独的代码库要转换,每个代码库都是活跃开发中的实时系统,因此迁移将是一个分阶段的方法。

  1. 创建每个 svn repo 的实时 git 克隆 -> 使用 git svn rebase 保持同步,然后推送到远程源主分支。 git 处于只读模式(适用于开发人员)。
  2. 开始使用 git repo 进行代码审查,而不是 svn
  3. 开始分支 git repo 以进行更改而不是 svn,将更改同步回 svn。 svn 处于只读模式(适用于开发人员)。

SVN 可能会用于部署/构建过程,因此我无法进行一次性转换,需要使用 git svn dcommit 来保持同步以在所有阶段回推。

【问题讨论】:

  • 作为临时工作,我能够指定一个修订版来启动克隆。这让我可以继续这个过程,直到找到克隆整个修订历史的解决方案。

标签: git svn git-svn


【解决方案1】:

切换协议可能有助于解决此错误消息。我在使用 svn over https 结帐时遇到了同样的问题。我将协议从 https:// 切换到 file://(同一台计算机中的服务器数据),这帮助我克服了这个问题。您可以查看支持线程的链接了解详细信息:https://support.tmatesoft.com/t/subgit-svn-to-git-migration-issue-fails-by-svn-error-e185001/2428/5 了解其他步骤。 这种解决方法帮助我将旧版 repo 迁移到 git 格式。我正在使用 subgit。

【讨论】:

  • 我最初怀疑这是否会有所帮助。理论上应该没什么区别吧?但显然该错误取决于协议。这确实也帮助我克服了这个确切的错误。感谢您的建议! (我后来确实遇到了类似的内部错误,但我能够通过使用 svnadmin dumpsvnadmin load 命令重建原始仓库(真的很旧)来解决这个问题,然后再次尝试 git-svn 迁移。
猜你喜欢
  • 2012-08-13
  • 2012-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-28
  • 2010-11-05
  • 1970-01-01
  • 2012-11-18
相关资源
最近更新 更多