【发布时间】:2011-05-21 00:40:54
【问题描述】:
“git svn fetch”没有完成并喷出以下(错误)消息:
(dev) martinom :: /var/my/git ‹master*› » git svn fetch
Found possible branch point: http://.../branches/dexter/lib => http://.../tags/dexter-17, 25032
Initializing parent: refs/remotes/tags/dexter-17@25032 branch_from: /.../trunk => /.../trunk/lib
Found possible branch point: http://.../trunk/lib => http://.../branches/dexter/lib, 24233
Initializing parent: refs/remotes/tags/dexter-17@24233
fatal: Not a valid object name
ls-tree -z ./: command returned error: 128
似乎 ls-tree 在路径之前缺少对象名称。我不知道在什么上下文中调用它以及为什么它不存在。
一些背景知识可能有助于说明问题所在:
- 我应该在 tags/ 中从整个存储库创建一个标签,但是,我设法只将分支/.../lib 复制到标签,创建了一个损坏的标签 (svn cp ...)。
- 然后我用 svn rm 删除了损坏的标签 (dexter-17)。
- 我再次调用 cp 创建了新的正确标签。
然后继续正常发展,一切似乎都很好。好吧,直到我尝试更新我的 git-svn 存储库。
我想可能有几种方法可以绕过这个问题。首先,您可以看到历史变得相当大,我们已经通过了 25k 次修订,因此使用 git 从超过损坏的修订版的 rev 进行克隆是最不可取的。
如果可能的话,以某种方式跳过 git-svn 中的标签创建修订是另一种方法。我真的不需要历史中损坏标签的历史。
最后,可能会删除/修复 subversion 存储库/db 中的内容以使其与 git-svn 兼容。如果这意味着完全删除修订版或修改它或其他什么。
如果能知道究竟是什么导致 git-svn 像这样呕吐,那就太好了。从 .git/svn/refs/remotes/tags 我看到 dexter-17、dexter-17@2423 和 dexter-17@25032 作为远程参考。这对我来说似乎不太理智......
【问题讨论】: