我一整天都在尝试根据一个非常大的远程subversion存储库手动配置一个git存储库。它有默认配置(主干,分支,标签),但我只想要一小部分数据。
我不完全理解Git的:.git / config中的refs / remotes / *语法,尽管很多在线帖子都有编辑和提取的解释。
我将我的svn repo存储到$SVNR
环境变量中。它大致等于https://svn.ourserver.com/svn/
我想要一个git master
分支来跟踪$ SVNR / branches / production和一个development
分支来跟踪远程svn trunk。
我有一个巨大的回购,只需要一些修改,并构建我的git repo是远程SVN回购的小得多的子集,就像这样。关于这样做的许多其他网站和帖子之后,我最终得到了克隆命令:
git svn clone -r2000:HEAD --prefix=svnrepo/ --authors-file=/Users/phpguru/Sites/authors.txt $SVNR/branches/production gitrepo
现在我可以cd gitrepo
看到我的.git/config
[svn-remote "svn"]
url = https://svn.ourserver.com/svn/projectfoo/branches/production
fetch = :refs/remotes/svnrepo/git-svn
[svn]
authorsfile = /Users/phpguru/Sites/authors.txt
现在让我们分开一会儿。为什么master
没有列在这里? git-svn
来自哪里?这在我的SVN回购中不存在。我不明白为什么fetch引用没有说fetch = master:refs/remotes/svnrepo/branches/production
?如此多的例子所示,我可以将“svn”更改为“projectfoo”吗?
当我执行git svn info
和git branch -a
时,我确实看到了一个主分支。看来master正在按照我的意愿正确跟踪分支/生产。
我的问题是,我现在如何创建一个跟踪远程主干的development
分支?
我尝试了十几种不同的方式,包括使用一些逻辑提取行编辑.git / config:
fetch = branches/*:refs/remotes/svnrepo/branches/*
fetch = development/*:refs/remotes/svnrepo/trunk/*
但没有任何效果。
$ git branch --track development remotes/svnrepo/trunk
error: the requested upstream branch 'remotes/svnrepo/trunk' does not exist
hint:
hint: If you are planning on basing your work on an upstream
hint: branch that already exists at the remote, you may need to
hint: run "git fetch" to retrieve it.
hint:
hint: If you are planning to push out a new local branch that
hint: will track its remote counterpart, you may want to use
hint: "git push -u" to set the upstream config as you push.
或者,
$ git branch development --track remotes/git-svn-trunk
fatal: Cannot setup tracking information; starting point 'remotes/git-svn-trunk' is not a branch.