问题 svn2git:无法设置跟踪信息


我试图在svn2git的帮助下将SVN项目迁移到git。执行命令时,退出时出现以下错误:

Running command: git branch --track "0.0.9" "remotes/svn/0.0.9"
fatal: Cannot setup tracking information; starting point 'remotes/svn/0.0.9' is not a branch. 

开始时:

 svn2git http://<host>/<project>

我找不到任何解决方案,似乎没有多少用户遇到同样的问题。

我该怎么做才能解决这个问题?


8276
2017-07-25 07:59


起源

你执行了什么命令? - che
使用执行命令编辑了开始帖子 - pderaaij
尝试运行它 -v,可能会打印一些有用的调试信息,包括git的输出,这使得它相信有这样一个远程分支。 - che
这应该解决它: github.com/nirvdrum/svn2git/issues/132#issuecomment-31453436 - Daniel Ruf


答案:


我使用Debian Sid遇到了同样的问题(“git”的版本是1:1.8.3.2-1)。在我使用股票“git”包(1:1.7.2.5-3)在Debian Squeeze上失败之前。 最后我最终使用了squeeze-backport存储库(1:1.7.10.4-1~bpo60 + 1),现在它可以工作了。

你用的是什么版本的Git?


7
2017-08-08 10:54



我遇到了同样的问题,git 1.8.1.3工作正常,但更新到1.8.3.3会产生上述错误。 - Blair Zajac
对不起,对于后期反应。降级到1.7也适用于我。感谢您的回答! - pderaaij
Git 1.8.3.1是最新版本,适用于svn2git的当前版本2.2.2。几天前,一个修复程序已集成到svn2git中,但尚未正式发布。 这是GitHub问题如果你想调查它(显然修复非常简单,只是一个命令行选项) git branch 需要删除)。 - herzbube
github.com/nirvdrum/svn2git/issues/132#issuecomment-31453436 - Daniel Ruf
@Jason McCreary我很高兴它现在适合你,快乐迁移到Git =) - Daniel Ruf


这应该解决它:

改变这一行 https://github.com/nirvdrum/svn2git/blob/master/lib/svn2git/migration.rb#L319
run_command("git branch --track \"#{branch}\" \"remotes/svn/#{branch}\"")
run_command("git branch \"#{branch}\" \"remotes/svn/#{branch}\"") 应该解决它。

至少它现在对我没有任何问题。

你可以找到 migration.rb Windows下的文件 C:\Ruby200-x64\lib\ruby\gems\2.0.0\gems\svn2git-2.2.2\lib\svn2git 或类似的东西

https://github.com/nirvdrum/svn2git/issues/132#issuecomment-31453436


6
2018-01-02 14:15



这也适用于Ubuntu 12.04上的2.2.2。 - glennr
很高兴知道=) - Daniel Ruf
这在Ubuntu 14.04上仍然是必需的,所以可能是新版本没有推送到gem安装下载软件包的地方。 - 6EQUJ5
我不知道为什么没有新版本,但他们应该推动一个解决问题。但我个人认为,我提到的解决方案是最佳解决方案,应该适用于所有系统并与之兼容。但我没有测试过这个。 - Daniel Ruf
对Nate,现在正式修复并发布 - Daniel Ruf


我想在不更改代码的情况下为此添加快速而肮脏的解决方案!

每次出现错误时,只需手动更改分支并继续执行 svn2git 命令。

所以要完成工作流程:

运行命令

svn2git ....

得到了错误

Running command: git branch --track "0.0.9" "remotes/svn/0.0.9"
fatal: Cannot setup tracking information; starting point 'remotes/svn/0.0.9' is not a branch. 

手动更改分支(复制 Running command: 排队和删除 --track

branch "0.0.9" "remotes/svn/0.0.9"

继续 svn2git

svn2git ...

注意 ... 之后 svn2git 以上是你的svn2git命令


2
2018-04-06 13:10



当你有很多分支并且必须手动执行此操作而不是更改代码时,这可能需要一段时间(因此它始终有效) - Daniel Ruf


如果你有少量的分支机构并且不想降级git,这是一种解决问题的方法。运行“git branch -r”以获取分支列表。然后为每个分支运行以下命令(例如,名为svn / next_branch):

$ git branch "next_branch" "remotes/svn/next_branch"

唯一的区别是删除了“--track”选项。

那是应用于此的修复 Github问题


1
2017-12-13 18:17