我正在尝试每天将我的svn存储库同步到git。经过多次阅读,我能够通过在我的.git / config中手动创建以下内容来完成这项工作:
[svn-remote "svn"]
url = svn+ssh://svn.myserver.com/project/trunk
fetch = apps/ios/project:refs/remotes/mirror/project
然后我根据此代码创建了一个分支,并将其推送到git repo:
git checkout -b mirror/project mirror/project
git svn rebase
git push
我很高兴,直到我认为我确实通过从磁盘删除克隆的repo并再次克隆它,然后尝试从svn推送一些更新来确保这实际上有效。
git clone git@myrepo.com:myproject
git checkout mirror/project
git svn rebase
这给了我以下错误:Unable to determine upstream SVN information from working tree history
我已经在stackoverflow上阅读了关于此消息的无数帖子,但我还没有理解任何解决方案。是否可以用git新手来解释为什么git选择忘记我的svn配置?
答案 0 :(得分:3)
我没有看到一个简单的“git clone”如何知道你的svn上游回购信息。
您已将svn-remote
存储在.git/config
中。克隆回购时没有克隆本地配置(正如我在“Is it possible to clone git config from remote location?”中提到的那样)。
除非您执行git svn clone
或在您的回购邮件中再次提供svn-remote
信息,否则您将无法访问初始信息。
答案 1 :(得分:2)
以下命令让我的新克隆重新连接到Subversion:
git svn init https://svn.myserver.com/project -s
git update-ref refs/remotes/origin/trunk refs/remotes/origin/master
git svn rebase
似乎更新裁判是缺失的一步。