Git svn rebase:校验和不匹配

问题描述 投票:42回答:6

我尝试在存储库上执行git svn rebase时遇到问题。它显示:

Checksum mismatch: code/app/meta_appli/app_info.py
expected: d9cefed5d1a630273aa3742f7f414c83
     got: 4eb5f3506698bdcb64347b5237ada19f

我进行了很多搜索,但还没有找到解决此问题的方法。

[如果有人知道,请分享您的知识。预先感谢。

svn git git-svn
6个回答
59
投票

This solution是唯一为我工作的人:

查看文件上一次更改的修订版号是什么:

git svn log chrome/test/functional/search_engines.py

将svn重置为该修订版之前最接近的父级:

git svn reset -r62248 -p

执行git svn fetch

舞动成功。


1
投票

只是发生在我身上,我在“ git svn dcommit”中用完了空间,此后又收到了相同的消息,“ Checksum mismatch”。

我刚刚编辑了.git / refs / remotes / git-svn,并用上一个替换了有问题的提交的ID。下一步重新解决该问题。


1
投票

我仅指定分支但没有中继时遇到此错误。当我将其中一个分支指定为主干时,重试时再也没有错误。 (在git svn中,整个“ trunk”,“ branch”,“ trunk”的区别一般来说有点愚蠢,因为它们只是人类的约定,而在svn中却没有更深层次的技术含义。)


0
投票

我刚刚做了一个git gc,然后git svn rebase又开始工作了。


0
投票

此外,Domenic的回答(2019年仍将svn转换为git…):

在删除-然后重新创建的分支(1)的特定情况下,不匹配会系统地发生,并且在删除对旧分支的引用后,应将重置应用于分支创建提交:

> git svn fetch
…
r146970 = …
Checksum mismatch: bla.x # Uh oh, there we go!
> # Seems to have occurred while fetching r146971 (last passed rev + 1), so let's try it:
> svn log -v -r 146971 $svn
M /branches/y/bla.x
> # OK, bla.x is a good indicator that this is indeed our failing commit.
> # What was the preceding commit on it, according to SVN?
> svn log -v -r 146971 $svn/branches/y/bla.x | less
------------------------------------------------------------------------
r146971
  M /branches/y/bla.x
Modified bla.x
------------------------------------------------------------------------
r145665
  A /branches/y (from /branches/z:145664)
Rebasing y on z
------------------------------------------------------------------------
> # Exactly what we were looking for: a branch creation. Let us clean branch y
> # so that git-svn is forced to find its recreation commit:
> rm -R .git/refs/remotes/origin/y .git/*/refs/remotes/origin/y
> vi .git/info/refs .git/packed-refs # remove references to y
> git svn reset -r145665 -p
> git svn fetch

我假设git-svn没有看到或应用分支删除,认为没有必要从分支z重新创建它,因此尝试在老树上应用146971。告诉它没有分支y会强制其播放分支创建(从z开始)。

((1)在svn中模拟分支y的git rebase z的等效项:svn mv y y.old && svn cp z y && svn合并以在新y上获得y.old的所有提交


-1
投票

[在我们的实践中,git svn clone ...中的.shtml文件上的错误“校验和不匹配:”是由前端Apache服务器的设置引起的,该.shtml文件(来自SVN)被解释为服务器端。包含(SSI),从而产生实时内容,而不仅仅是提供存储的文件内容。通过注释掉

,在迁移期间禁用Apache的/etc/httpd.conf文件中的SSI。
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml

指令解决了问题。无论如何,存储库的迁移可能会排除某些路径和文件,发生以下情况:

git svn clone <URL> --ignore-paths=<regex>

条款。检查那些文件是否具有特殊解释(如SSI(以及.php和.py文件))并检查SVN服务器进程的环境是有意义的,然后将其禁用。

© www.soinside.com 2019 - 2024. All rights reserved.