在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
答案 0 :(得分:34)
这不被git-svn开发人员视为错误。事实上,这是v1.8.3.2中的错误修复的结果。设置本地local-hedgehog
以跟踪git-svn的hedgehog
将不再有效。
从现在开始,只需做
git checkout -b hedgehog remotes/hedgehog
足以完成所有常用的git-svn操作(git svn rebase
,git 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