当运行get svn fetch从上游svn存储库中提取最新的新分支时,我遇到了这个错误:
$ git svn fetch
fatal: failed to unpack tree object 5ecb324e8b8fcb918acb253f33edc6ce49e49e0d
read-tree 5ecb324e8b8fcb918acb253f33edc6ce49e49e0d: command returned error: 128
Run Code Online (Sandbox Code Playgroud)
现在,对该本地仓库的git svn的每次尝试都会导致相同的错误.最初我运行git版本1.5.6.4_0并在错误后我尝试更新到1.6.0.2_2并且问题仍然存在.
有没有办法清理这种腐败?上游存储库的新git svn克隆很好,但我想保留现有的设置.我查看了文档并搜索了没有运气的问题.
我有同样的问题.这是由于特定的SVN修订版,git-svn无法以某种方式读取或处理.这是我按顺序尝试的:
git svn reset -r 42git svn fetch- 从42开始获取每个修订版,直到有罪的一个(比如50),然后显示相同的错误消息.git svn fetch --parent- 不要问我为什么.这取得了更多的修改.不知道它是否相关.git svn fetch- 仍然无法正常工作.git svn fetch -r 50 - 工作.git svn fetch -r 51 - 虽然没有错误信息,继续.git svn fetch -r xx - 显示错误消息,这是错误的修订.不在乎.git svn fetch -r xx+1 - 工作.git svn fetch- 工作!开始获取更多修订.这个过程应该被清理(可能接近第一步),但它对我有用,而不必重新开始使用新的克隆.
最可能的原因是文件或提交(树引用)已损坏或丢失。或者树本身可能被损坏。检查:
git fsck --unreachable HEAD $(cat .git/refs/heads/*)
Run Code Online (Sandbox Code Playgroud)
这将显示一堆“悬空”文件,您不关心这些文件;损坏的文件将报告“无效的 SHA1”或类似的内容。我不知道丢失的文件会如何报告。从上游存储库中删除所有损坏的项目并rsync替换它们。