4

我在将 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

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

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

这个过程已经转换了 117 个分支,其中一些分支的名称中有空格。我首先发现了这个 SO question,它帮助我从 git 1.8.xx 解决的上一个问题向前推进

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

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

4

2 回答 2

6

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

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

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

并在包含有问题的分支/标签的行的开头放置一个井号 (#)。

例如,关于我的问题

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

变成

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

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

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

于 2013-01-17T14:34:36.517 回答
6

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

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

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

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

于 2015-12-04T09:21:39.933 回答