git-svn:无法设置跟踪信息;起点不是分支

时间:2013-10-31 17:11:15

标签: git git-svn

在git 1.7.9.5中,我可以运行以下行而不会出错:

export SVNPASS=readonly
git clone git@github.com:dtenenbaum/RGalaxy.test.git
cd RGalaxy.test/
git config --add svn-remote.hedgehog.url https://hedgehog.fhcrc.org/bioconductor/trunk/madman/Rpacks/RGalaxy
git config --add svn-remote.hedgehog.fetch :refs/remotes/hedgehog
# the following is a shortcut to avoid fetching every commit since antiquity, since I happen to know the commit number
# where this folder was added to svn:
echo $SVNPASS | git svn fetch --username readonly hedgehog -r 65762:HEAD
git checkout -b local-hedgehog -t hedgehog

在git 1.8.3.4和1.8.4.1中,最后一行导致:

fatal: Cannot setup tracking information; starting point 'hedgehog' is not a branch.

this question的评论建议降级,但我想知道为什么会发生这种情况:这是一个错误吗?如果是这样,有报道吗?或者有更好的方法来做到这一点,如果有,那是什么?

顺便说一句,“git branch -a”返回:

* master
  remotes/hedgehog
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

4 个答案:

答案 0 :(得分:34)

这不被git-svn开发人员视为错误。事实上,这是v1.8.3.2中的错误修复的结果。设置本地local-hedgehog以跟踪git-svn的hedgehog将不再有效。

从现在开始,只需做

git checkout -b hedgehog remotes/hedgehog

足以完成所有常用的git-svn操作(git svn rebasegit svn dcommit等。)。

这是Johan Herland的解释:

  

在v1.8.3.2之前,这仍然有点工作(如下所示),   因为代码无法实现远程无效,并且退回   设置branch.feat-bar.remote =“。” (即现在的回购)。这个   在你意识到“git push”回来之前,这似乎是一种很好的做法   到那个无效的上游会愉快地覆盖   refs / remotes /(mirror /)feat-bar,从而打破了git-svn的内部状态。

     

此错误已在v1.8.3.2中修复,更具体地说是41c21f22(branch.c:   使用refspecs而不是refs / remotes / *验证跟踪分支,   您可以在该提交消息中阅读有关该基本原理的更多信息。

     

最终结果是设置要跟踪的本地专栏   升级到> =后,将不再接受git-svn的专栏   v1.8.3.2。设置本地专栏分支的正确方法   git-svn的壮举之处是放弃上游关系   并简单地做“git checkout -b feat-bar refs / remotes /(mirror /)feat-bar”。

如果您想了解更多详情,建议您阅读他的whole post

答案 1 :(得分:5)

在SourceTree中,只需删除勾选“local branch should track remote branch”的复选框。

答案 2 :(得分:1)

针对此问题提出了许多修正建议:

https://github.com/nirvdrum/svn2git/issues/132
https://github.com/nirvdrum/svn2git/pull/145

在我看来这是svn2git中的一个错误

答案 3 :(得分:0)

我使用的是:git branch --set-upstream remotes / git-svn