我不久前用std布局从SVN克隆了一个git存储库。(这是用gitsvn-init和gitsvn-fetch完成的)。现在我使用的是git 1.7.9。我的svn远程配置部分如下所示:
[svn-remote "svn"]
url = https://myhost/svn/myProject
fetch = trunk:refs/remotes/trunk
branches = branches/*:refs/remotes/*
tags = tags/*:refs/remotes/tags/*
最初提取的所有分支都能正常工作,随后的提取在这些分支和主干上也是正确的。每个分支下的目录结构如下:
subProject1srcmyPackage
subProject2src
subProject3src
现在创建了一个名为2_7_1的新分支,它与所有其他分支和主干的目录结构相匹配。
现在,当我运行git-svn-etch时,它开始从r1中获取每个修订,而不是只从从从trunk创建2_7_1分支的修订中获取。原因似乎是它假设:src\myPackage目录结构,而不是subProject1\src\myPackage 当我在浏览器中浏览SVN repo时,我看不到目录结构有什么不同。我只注意到一个区别,新分支名为2_7_1@18813(18813是新分支的起始修订号),其中所有其他分支都不包含修订,只包含分支名称。 我不想使用这里提供的解决方案:我如何告诉git svn在获取repo后创建的远程分支,因为它将丢失干线和2_。 编辑:在完成完整的git-svn获取之后,我清楚地看到我的git-svn看到了两个分支:2_7_1和2_7_1@18813.2_7_1@18813是从修订版#1中提取的。这把我之前追踪SVN中继的主分支搞砸了。 现在我的分支结构看起来像这样(一团糟): 编辑#2:在使用git-SVN-clone对SVN repo进行完整克隆后,问题仍然存在。------------------------------------------- X -- Y -- Z == masterNew/trunk
-- A -- B -- C -- D -- E -- F -- G ---- == 2_7_1@18813
- J - K - L == master (old trunk)
- A' - B' - C' - D' - E' - F' - G' -- H -- I == 2_7_1
您可以从公共父级分支到2_7_1分支,然后使用"How do I tell git svn about a remote branch created after I take the repo"中的说明将该分支装配到git svn?