0

不久前,我有一个使用标准布局从 SVN 克隆的 git 存储库。(它是用 git svn init 和 git svn fetch 完成的)。现在我使用的是 git 1.7.9。我的 svn-remote 配置部分如下所示:

[svn-remote "svn"]
        url = https://myhost/svn/myProject
        fetch = trunk:refs/remotes/trunk
        branches = branches/*:refs/remotes/*
        tags = tags/*:refs/remotes/tags/*

最初提取的所有分支都正常工作,后续提取在这些分支和主干上也是正确的。每个分支下的目录结构如下所示:

subProject1\src\myPackage
subProject2\src\
subProject3\src\

现在创建了一个名为 2_7_1 的新分支,它与所有其他分支和主干的目录结构相匹配。

现在,当我运行git svn fetch时,它开始从 r1 获取每个修订版,而不是仅从从主干创建 2_7_1 分支的修订版中获取它。原因似乎是它假设:src\myPackage目录结构而不是subProject1\src\myPackage,因此它开始获取从 r1 开始的所有修订。

当我在浏览器中浏览 SVN 存储库时,我发现目录结构没有任何区别。我注意到只有一个区别,新分支称为 2_7_1@18813(18813 是新分支的起始修订号),其中所有其他分支不包含修订,只有分支名称。

我不想使用此处提供的解决方案:How do I tell git-svn about a remote branch created after I fetch the repo? ,因为它会失去主干和 2_7_1 分支的共同父级。

编辑: 在完成完整的git svn fetch之后,我很清楚我的 git svn 看到了两个分支:2_7_1 和 2_7_1@18813。2_7_1@18813 是从修订版 #1 中获取的。这弄乱了我之前跟踪 SVN 主干的主分支。

现在我的分支结构看起来像这样(一团糟):

------------------------------------------- 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: 使用 git svn clone 对 SVN 存储库进行完整克隆后,问题仍然存在。

4

1 回答 1

0

You could branch from the common parent into the 2_7_1 branch, then rig that branch to git-svn with the instructions from How do I tell git-svn about a remote branch created after I fetched the repo?

于 2013-02-19T22:10:04.060 回答