16

在此过程中,git svn clone -s https://svn.example.com/repo/我收到以下输出:

r3073 = a6132f3a937b632015e66d694250da9f606b8333 (refs/remotes/trunk)
Found possible branch point: https://svn.example.com/repo/trunk => https://svn.example.com/repo/branches/v1.3, 3073
W: Refspec glob conflict (ref: refs/remotes/trunk):
expected path: repo/branches/trunk
    real path: repo/trunk
Continuing ahead with repo/trunk
W: Refspec glob conflict (ref: refs/remotes/trunk):
expected path: repo/branches/trunk
    real path: repo/trunk
Continuing ahead with repo/trunk
W: Refspec glob conflict (ref: refs/remotes/trunk):
expected path: repo/branches/trunk
    real path: repo/trunk
Continuing ahead with repo/trunk
W: Refspec glob conflict (ref: refs/remotes/trunk):
expected path: repo/branches/trunk
    real path: repo/trunk
Continuing ahead with repo/trunk
fatal: Not a valid object name refs/remotes/tags/Sync Controllers
cat-file commit refs/remotes/tags/Sync Controllers: command returned error: 128

运行git branch -a给出:

remotes/tags/Sync%20Controllers
remotes/tags/v1.1
remotes/trunk
remotes/v1.2

我认为问题在于“remotes/tags/Sync Controllers”!=“remotes/tags/Sync%20Controllers”。

4

5 回答 5

29

SVN 上的标签中有一个空格,但 git 中的标签将此空格转换为%20(URL 编码)。要解决它,只需手动添加一个带有逐字名称的新标签:

cd .git/refs/remotes/tags/
mv Sync%20Controllers Sync\ Controllers

然后再次运行该git svn clone命令。

(通常你会这样做,git tag OLDTAG NEWTAG但 git 不允许我定义一个带有空格的标签。标签文件只是包含相关提交哈希的文本文件。)

于 2012-07-06T15:37:20.490 回答
5

您可以使用 git-svn 服务器端替代方案SubGit以避免许多 git-svn 翻译问题。

我是一名 SubGit 开发人员,可以说我们为解决上述字符翻译问题做了很多工作;在这种特殊情况下,标签将被转换为refs/tags/Sync+Controllers标签。

另请注意,git-svn 已将 Subversion 标签翻译为分支而不是标签。

于 2012-07-19T14:31:42.660 回答
5

我今天遇到了这个问题,并认为这个包含速度的分支并不重要,我只是运行

git branch -r -d partialPayment%202.4

并重新运行gitsvn fetch 它跳过了当前分支并继续抓取下一个。

于 2017-08-12T01:54:55.180 回答
0

我相信空格的问题在 Git >= 1.8.0 中已修复(参见:#786942)。

所以你应该升级它。

我已经对其进行了测试,它似乎可以在最新版本的 git 中使用。

见 GitHub 主页:https ://github.com/git/git

于 2012-10-26T09:00:22.820 回答
0

我正在使用 git 1.29.2 并且也遇到了问题。此外,它正在运行到 Windows Server 2016 并且 git 在 cygwin 下。

正在检查/GitMigration/.git/svn/refs/remotes/origin,并且该文件夹在那里有空格%20,所以没有什么可以改变的。

但是进入packed-refs产生问题的标签没有出现,没有名称,也没有哈希。

该问题应该有另一个与产生错误的其他相关问题,而不仅仅是这个。

查看./.git/config发现以下行的一系列重复:

branches = server/branches/*:refs/remotes/origin/*
tags = server/tags/*:refs/remotes/origin/tags/*

每次我运行 git-svn clone 语句时都会产生这种情况。所以我确实从配置文件中删除了这些,保存并再次运行,但这次使用git svn fetch, 以防止再次重复行,voala !! 问题解决了。

于 2020-12-08T10:08:49.587 回答