不完整的数据:在git svn获取时,Delta源意外结束

时间:2014-01-24 14:17:51

标签: git git-svn

我已经将我的svn repo克隆到git中并且每天我正在进行git svn fetch(我只对SVN进行更改)但是我打算转到git并且我保持git repo同步到svn clone之后的那一天太过我2周了(是的,这是一个很大的回购)。

无论如何,git svn fetch每天都运行良好,直到2天前我现在得到了

Incomplete data: Delta source ended unexpectedly at /usr/lib/perl5/site_perl/Git/SVN/Ra.pm line 290

在特定修订版中。我在网上尝试了不同的建议,关于git svn reset和返回一些修订版本,我回复了大约20个版本,没有运气。我也尝试过:

git config --get core.autocrlf

给了true

我知道svn repo工作正常,我没有问题。

我有什么想法可以回到正轨再次同步?我不知道该尝试什么。

我可能会揭露一个问题。我不记得了,但在运行问题之前,我可能在磁盘上有一个磁盘满,当我尝试获取时回购。也许这会摧毁一些东西?

/ donnib

3 个答案:

答案 0 :(得分:1)

  1. 确保没有其他git / perl进程正在运行(这可能会创建 index.lock 文件并弄乱当前的提取)。 Kill'em all。
  2. 删除 ... \ my_repository.git \ .git \ svn \ refs \ remotes \ trunk \ index.lock 文件
  3. git svn reset -r SomeSVNRevisionNumberBeforeTheProblematicOne
  4. git svn fetch
  5. Fetch应该从 SomeSVNRevisionNumberBeforeTheProblematicOne 继续。

    发生这种情况的最可能原因是在同一个存储库上同时运行的两个git实例之间的并发性。

答案 1 :(得分:0)

有时使用--ignore-paths会有所帮助,因此步骤如下:

  1. git svn reset -r <svn-version-before-error>
  2. git svn fetch --ignore-paths=/branches/badbranch

答案 2 :(得分:0)

我使用-r参数解决了类似的问题。我的情况如下:

  • 我在特定版本(例如1000)的SVN中创建了/ branches / dev分支,并开始使用它
  • 所有以前的修订版都针对/ trunk
  • 我从 git svn克隆 开始了master分支的迁移,这使所有svn / trunk都迁移到了git master
  • 然后,我为svn开发分支添加了另一个提取配置,并恢复了svn提取
# .git/config
[svn-remote "svn"]
    url = http://some-repo/path
    fetch = /trunk:refs/remotes/trunk
    fetch = branches/dev:refs/remotes/dev
  • git svn fetch 抱怨版本999,该版本属于/ trunk,并且已经迁移到git master(不完整的数据:Delta源意外终止于/usr/lib/perl5/site_perl/Git/SVN/Ra.pm 第312行
  • 注意错误指向第312行,这可能与该票证中提到的第290行有不同的问题吗?
  • 然后我运行 git svn fetch -r 1000:HEAD ,这使我可以在创建/ branches / dev之前迁移/ branches / dev的所有修订,但不包含修订< / li>