我想使用git svn来跟踪Subversion存储库中的两个远程分支。怎么样?

时间:2014-03-04 00:45:36

标签: git svn version-control git-svn

我一整天都在尝试根据一个非常大的远程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 infogit 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.

0 个答案:

没有答案