Git SVN获取校验和不匹配错误



git svn fetch抛出校验和不匹配错误。

Checksum mismatch: pathto/web.xml bee95da33774b2dd11bf5430edfd7a315
expected: 018eb065a44eda65b848aksefhksdhf
     got: 2ae75279246a5602c058df8sdfsdkfs

我已经参考了git-svn-checksum-mismatch和类似的SO后git-svn-rebase-checksum-mismatch并尝试了提供的解决方案。这不能解决我的问题。

当我执行日志和重置命令时,我得到以下错误:

git svn log pathto/web.xml
git svn reset -r5000 -p

fatal: ambiguous argument 'HEAD':未知的版本或路径不在工作树。使用'——'分隔路径和版本,如下所示:"git[…——[…]rev-list——第一个父母HEAD:命令返回错误:128

我知道这是非常旧的版本。由于其他原因,我们正在使用这个旧版本。

在与最近命名为'cpa'的新分支同步存储库时遇到同样的失败,并且被卡在该分支的某个版本上,错误如'校验和不匹配'或'索引不匹配',尝试git svn reset失败等

最后我通过删除失败分支的所有refs来解决问题,以便下一个git svn fetch重新获取并重建整个分支。这有点残酷:

$ locate /cpa | grep /.git/
/pathrepo/.git/logs/refs/remotes/cpa@10343
/pathrepo/.git/refs/remotes/cpa@10343
/pathrepo/.git/svn/refs/remotes/cpa
/pathrepo/.git/svn/refs/remotes/cpa@10343

验证它是可信和安全的,然后执行:

$ locate /cpa | grep /.git/ | xargs rm -rf
$ git svn fetch

正如我所料,git svn fetch重新同步了确切的树,这次成功了。

我也遇到了同样的问题。这表明您的svn存储库已损坏,您需要转储并加载svn存储库才能继续。关于这个问题,我已经写了很详尽的回答,希望对大家有所帮助。

最新更新