将subversion存储库转换为git,为什么我看到“致命:不是有效的对象名称”?

时间:2013-01-17 12:37:18

标签: git svn repository git-svn

我在将subversion repo转换为git时看到以下输出。

> Found possible branch point: <repo-url>/trunk => <repo-url>/branches/CMT_PHASE3, 18441
> fatal: Not a valid object name refs/remotes/BlueSimViewer 5.0 20110316 Branch
> cat-file commit refs/remotes/BlueSimViewer 5.0 20110316 Branch: command returned error: 128

我正在运行以转换回购的命令是

> git svn clone <repo-url> -A authors-transform.txt --stdlayout converted-git > svnlog

此过程已经转换了117个分支,其中一些分支中包含空格。我首先找到了this SO question,这帮助我从git 1.8.x.x解决的上一个问题向前推进。

非常感谢任何有关此问题的原因以及解决此问题的可能方法的见解。

我在Ubuntu 12.10服务器上运行git版本1.8.1.1。我很开心 提供任何其他有用的信息。

2 个答案:

答案 0 :(得分:6)

我找到了解决方案,但我对结果不满意。如果有人能够提供一种方法来做到这一点而不会忽视有问题的分支,那么我很乐意接受他或她的回答。

对于抛出此错误的每个分支/标记,请打开以下文件

git-repo-name/.git/packged-refs

并在包含违规分支/标记的行的开头放置一个井号(#)。

例如,关于我的问题

b88c4df0d47a9ca43c2d0ffd4a1f6e471f98aebc refs/remotes/BlueSimViewer%205.0%2020110316%20Branch

变为

#b88c4df0d47a9ca43c2d0ffd4a1f6e471f98aebc refs/remotes/BlueSimViewer%205.0%2020110316%20Branch

这将该行标记为注释,git将继续转换过程,同时忽略有问题的分支。

在撰写此答案时,我仍在转换。虽然这个解决方案意味着错过了一些分支机构,但至少我会知道哪些分支机构不存在。

答案 1 :(得分:3)

现在可能为时已晚,但我想我找到了一个至少是奇怪的解决方案。

打开您提到的文件git-repo-name/.git/packged-refs,将%20替换为空格,保存文档然后重试。为我工作。

使用UTF-8在Notepad ++中编辑。

Git版本:git version 2.6.2.windows.1(通过git bash赢得7 64x)。