4

我在 SVN 中有一个要迁移到 Git 的项目。该项目由一个“核心”产品(在主干下)组成,然后在同一个存储库中分支,并用作为我们推出产品的每个客户进行定制的起点。

在我看来,这些不是真正的分支,因为它们永远不会合并回主干,而且他们最好住在自己的存储库中,他们的历史将它们链接回“主干”存储库以及拉取的能力在需要时从主干进行更改(当然可以使用 git 轻松完成)。

让事情稍微复杂一点的是,一个客户拥有自己项目的一个分支,这是一个“真正的”分支,因为它将在某个时间点合并回该客户的主分支。

为了让事情更清楚,SVN结构如下:

  • “项目”存储库
    • 树干
    • 分支机构
      • Client1(从 Trunk v100 分支)
      • Client2(从 Trunk v150 分支)
      • Client2-Branch(从 Client2 v200 分支)
      • Client3(从 Trunk v150 分支)

我想达到的结构是

  • “项目”存储库

  • Client1 存储库(从 SHA123 分叉)

  • Client2 存储库(从 SHA456 分叉)

    • Client2-Branch(从 SHA456789 分支)
  • Client3 存储库(从 SHA789 分叉)

谁能推荐一个好方法来做到这一点 - 我不是 Git 新手,我知道过滤器分支,我只是不确定我应该采取什么方法来获得这个结构并尽可能多地保留历史。

谢谢

4

2 回答 2

4

如果您真的想这样做,请克隆存储库,并删除每个存储库中无关的分支。

但目前的情况似乎还不错。你确定你永远不想从一个 repo 到另一个 repo 中挑选补丁吗?

于 2010-10-22T11:02:21.627 回答
1

您可以使用svn2git将分支克隆到自己的存储库中,例如

svn2git svn://project/branches/client1 --rootistrunk

对于您要创建分叉回购的每个分支,然后

svn2git svn://project/trunk --rootistrunk

为后备箱。

我为一个非常大的 svn->git 转换做了类似的事情。

于 2010-10-23T01:08:59.830 回答