我尝试在存储库上执行git svn rebase时遇到问题。它显示:
Checksum mismatch: code/app/meta_appli/app_info.py
expected: d9cefed5d1a630273aa3742f7f414c83
got: 4eb5f3506698bdcb64347b5237ada19f
我进行了很多搜索,但还没有找到解决此问题的方法。
[如果有人知道,请分享您的知识。预先感谢。
This solution是唯一为我工作的人:
查看文件上一次更改的修订版号是什么:
git svn log chrome/test/functional/search_engines.py
将svn重置为该修订版之前最接近的父级:
git svn reset -r62248 -p
执行
git svn fetch
!舞动成功。
只是发生在我身上,我在“ git svn dcommit”中用完了空间,此后又收到了相同的消息,“ Checksum mismatch”。
我刚刚编辑了.git / refs / remotes / git-svn,并用上一个替换了有问题的提交的ID。下一步重新解决该问题。
我仅指定分支但没有中继时遇到此错误。当我将其中一个分支指定为主干时,重试时再也没有错误。 (在git svn
中,整个“ trunk”,“ branch”,“ trunk”的区别一般来说有点愚蠢,因为它们只是人类的约定,而在svn
中却没有更深层次的技术含义。)
我刚刚做了一个git gc
,然后git svn rebase
又开始工作了。
此外,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的所有提交
[在我们的实践中,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服务器进程的环境是有意义的,然后将其禁用。