2010-05-04 119 views
3

我有一个老板,过去式,他决定把svn分支放在与trunk相同的文件夹中。通常情况下,这并不会影响我,但因为我使用的是git-svn,所以事情进展得很顺利。在我做了一个抓取后,它为我的根文件夹中的每个分支创建了一个文件夹,所以我有三个文件夹,drupal,trunk和client。 drupal文件夹是git的主分支,客户端和主干是svn分支。使用奇数分支结构时Git-svn分支软管dcommit

合并和提交工作很好,实际上所有与git相关的工作都非常出色。但是,dcommit完全被占用,它试图提交一个名为client的文件夹和一个名为trunk的文件夹。我甚至无法想象这会对svn会造成什么破坏。

所以我的问题是,我在我的.git/config中做了什么错误,有什么我可以做的,以解决这个问题,还是我将不得不忍受并回到使用svn?

请不要让我回去。我认为我不能再忍受了。混蛋老板知道如何留下遗产。

[svn-remote "svn"] 
     url = https://svn.mydomain.com/svn/project_name 
     fetch = trunk:refs/remotes/trunk 
     branches = *:refs/remotes/* 
     tags = tags/*:refs/remotes/tags/* 

通常,分支线是这样的(使用--stdlayout时):

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

LS输出是这样的:

$ ls 
client/ docs/ drupal/ sql/ trunk/ 

GIT中-a输出:

* master 
    trunk 
    remotes/git-svn 
    remotes/trunk 
+0

有什么改变? dcommit曾经工作过吗? – dlamotte 2010-05-04 23:04:21

+0

是的,我曾经使用stdlayout,它运行得很好。但我需要开始与这个客户分支交谈,所以我必须更改.git/config – 2010-05-04 23:05:42

+0

@chuck在更改之前和更改之后它看起来是什么样子? – dlamotte 2010-05-04 23:06:27

回答

2

我想你打破了你的.git/config whe n您更改:

branches = branches/*:refs/remotes/* 

branches = *:refs/remotes/* 

更改您的.git/config中回你有什么正常。然后添加一个新的远程类似这样的格式(这是我从这个页面,http://www.dmo.ca/blog/20070608113513/发现),但与服务器的信息代替:

[svn-remote "svn34"] 
    url = svn+ssh://your-server/home/svn/project-name/branches/3.4.x 
    fetch = :refs/remotes/git-svn-3.4 

请注意添加一个新的“远程”跟踪的差异新的分支。您当前的远程无法用于跟踪不同的分支(就像从git-svn文档中看到的那样)。

+0

出于某种原因,我的老板没有将分支放在分支文件夹中,他只是在层次结构中将它们放在旁边的树干上。所以stdlayout .git/config没有这样做是行不通的。 – 2010-05-04 23:16:16

+0

这是一个微妙的答案。原来有两条获取线是可以的。因此,我将分支设置回原来的位置,并添加了第二条获取线,以便客户端有点像主干。 Git对待它非常好,而且一切似乎都很好。感谢所有的建议! – 2010-05-05 00:01:42

1

如果您不介意在每次添加分支时编辑.git/config,则可以使用glob集语法(http://www.kernel.org/pub/software/scm/git/docs/git -svn.html#_configuration):

fetch = trunk:refs/remotes/trunk 
branches = {client,drupal}:refs/remotes/* 
+0

谢谢,我很欣赏答案。我已经走了,但我希望别人认为这很有用。 – 2012-07-12 02:18:25