我们正在考虑从 SVN 迁移到 Git/Gitlab,但我想从之前完成此迁移的任何人那里得到一些建议,以了解以下两个工作流程中的哪一个最适合我们,或者是否有更好的方法来做到这一点。

我们的 SVN 存储库目前看起来像这样:

\tags
    \product1_v2
        \product_1
        \common
    \product2_v1
\trunk
    \product_1
    \product_2
    \common

从我读过的内容来看,使用 git 的正确方法是将 product_1product_2common 分成单独的存储库。我读过很多文章,这些文章建议使用 submodulesubtree 是链接到我的公共(public)代码的好策略。与简单地将我们的所有代码放在一个存储库中相比,这两种方法听起来都需要很大的开销。

一般来说,我们同时对各种产品和公共(public)库进行更改(我们的公共(public)库仍在不断发展)。

我知道 gitlab 有一个项目的概念,但我找不到关于多个项目是否可以共享一个存储库的明确答案(如果我们要在一个地方获取所有代码)。

所以我的问题是;您会推荐哪种方法来产生最少的开销和头痛?

最佳答案

我对此没有明确的答案,但我们的方式相似,所以我想分享我们已经完成的工作。

  • 我们使用的是 GitBlit(不是 GitLab),但我认为这没什么区别。
  • 我们有一些网络连接不好的分布式团队,所以规模可能是相关的。

  • 到目前为止,以下规则对我们有帮助:
  • Git 通常用于较小的存储库。任何可以独立于其他东西构建的东西,或者可以由不同的团队在不同的发布周期中更改的东西,都应该留在不同的存储库中。
  • 到目前为止我们还没有使用过子模块,这里引用了一本(德文)关于公司中 Git 使用的书:



  • 因此,根据整个代码库的粗略大小,如果所有人都在同一个团队中工作并且一直需要所有文件,则不需要拆分您的存储库。有可用的食谱之后如何做到这一点。

    GitBlit 具有“项目”和“存储库”的结构,它们是分层的。我试图为 GitLab 找到类似的东西,this 是我能找到的最好的。该项目似乎类似于存储库。

    尝试做一个实验:
  • 在存储库的主干上执行 git svn。那是可控的吗?尺寸怎么样?
  • 尝试命令的不同参数。查看存储库的大小如何变化,具体取决于您要迁移的历史记录的大小。

  • 所以最后,我会尝试只使用一个存储库,因为我没有看到任何拆分它的理由。只要是这种情况,就坚持下去。因此,您可以保留大部分开发过程、构建过程,然后可能会对其进行调整。

    关于git - 如何将包含多个项目和公共(public)库的 SVN 存储库迁移到 Git/Gitlab?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26586227/

    10-14 17:17
    查看更多