2012-03-01 69 views
3

注:此问题是由git-svn branching问题的启发和重复!如何将分支添加到.git/config?

没有做任何事情非同寻常,当我检查了我们的SVN回购我得到了以下的.git /配置文件:

[core] 
    repositoryformatversion = 0 
    filemode = true 
    bare = false 
    logallrefupdates = true 
    autocrlf = false 
[svn-remote "svn"] 
    url = svn+ssh://my_server/opt/subversion/main/trunk 
    fetch = :refs/remotes/git-svn 
[color] 
    ui = true 

当我尝试使用混帐SVN分支我得到的消息:

Unknown branch destination 

这样做的原因是,分行在的.git /配置失踪。我希望分支机构进入与主干并行的目录。因此,例如一个分支命名应该在这个路径中找到:

svn+ssh://my_server/opt/subversion/main/branches/foo 

如果我在git的内部制作与git的结帐-b富一个独立的分支我的工作,我则想打造与颠覆的分支:

git svn branch foo 

如何更新的.git /配置得到这个工作?我会期待像下面从混帐SVN分支富消息:

Copying svn+ssh://my_server/opt/subversion/main/trunk at r8507 to svn+ssh://my_server/opt/subversion/main/branches/foo... 

编辑: 如果我更新svn-remote部分内容:

[svn-remote "svn"] 
    url = svn+ssh://my_server/opt/subversion/main 
    fetch = trunk:refs/remotes/git-svn 
    branches = branches/*:refs/remotes/branches/* 

它看起来像它的做正确的事,似乎是工作,当我试图做混帐SVN变基混帐SVN分支。这是一个可行的解决方案,或者如果我在这个新的配置一段时间工作,我会大堆乱七八糟的吗?

+0

我想你必须使用'-s'开关创建初始的git-svn克隆。 – knittl 2012-03-01 12:22:42

+0

我没有具体记忆克隆是如何完成的。但是存储库非常庞大,我真的很想避免为了让.git/config“正确”而做一个新的克隆! – UlfR 2012-03-01 12:31:54

回答

3

你有问题,因为你的svn-remote.svn.url不是库的根,并获取多个分支它必须是。你可以改变它并运行获取,但我不确定git-svn可以使用它已有的数据。无论如何,这不会比重新克隆更糟糕。

你的配置必须看起来像。克隆时,通过使用-t trunk选项即可获得。

[svn-remote "svn"] 
    url = svn+ssh://my_server/opt/subversion/main 
    fetch = trunk:refs/remotes/trunk 

默认情况下,行李箱将直接进入遥控器,但你可以插入之间的一些名称,它是清洁的,如果你也有其他遥控器。我通常有refs/remotes/svn/trunk

如果您提供的-b选项,你也将有

branches = branches/*:refs/remotes/branches/* 

,但如果你没有,你可以随时手动添加。这就是你需要能够导入分支和创建分支。

最后-T选项会增加

tags = tags/*:refs/remotes/tags/* 

,你可以随时再以后添加。请注意,svn标签不会像git标签那样工作,它们仍然会像分支一样工作。

为方便起见-s克隆选项是-t trunk -b branches -T tags的简写。