【问题标题】:Git + SoA, one repo or many?Git + SoA,一个仓库还是多个?
【发布时间】:2011-02-19 02:10:30
【问题描述】:

通常,当我启动一个新应用程序时,我会为其创建一个新的 git 存储库。当我想分享我的代码时,这很受欢迎并且与 Github 配合得很好。

在工作中,我在一个面向服务的架构中工作。一种非常常见的模式是同时将一些代码添加到两个不同的应用程序中——也许添加一个带有 RESTful 接口的模型和一个用于在另一个应用程序上管理它的 Web 前端。在这种情况下,使用单独的 git 存储库有一些缺陷。

以下是我认为单独存储库的缺点:

  1. 我必须提交两次
  2. 我无法很好地关联相关的提交
  3. 没有一个地方可以返回和追溯历史 - 我希望能够在一个地方显示我当天的所有提交
  4. 忘记提取一个或另一个 repo 是一个问题

另一方面,我经常使用 perforce,它的一个巨大的存储库模型也有很多缺点。 Perforce 具有旨在帮助您解决这些问题的功能,而 git 没有。

还有其他人遇到过这种情况吗?你是怎么处理的呢?什么效果好,什么效果不好?

【问题讨论】:

    标签: git web-services architecture soa


    【解决方案1】:

    如果您的不同 repo 是同一个全局应用程序的一部分,您可以将它们合并为 submodules within a main project
    从那里你可以:

    • 在项目 P1 中只提交一次子模块(如果一个子模块需要在另一个项目 P2 中重用,您进入另一个项目 P2,在引用您刚刚在 P1 中提交的所述子模块的子目录中,签出该提交,返回上一级并提交其他项目 P2,因为 P2 必须引用与 P1 相同的提交)

    • 所有相关的提交都被主项目引用

    • “超级主”项目可以引用所有您的子模块,以便您拥有“一个可以返回和跟踪历史的单一位置”

    • 您只需要拉取主项目,这将拉取正确的子模块引用。

    【讨论】:

    • 这可能会奏效。我以前没有听说过子模块。这些(大部分)是独立的 Rails 应用程序,它们通过 RESTful 接口相互通信。客户端库包含在不同应用程序可以使用的 gem 中。
    猜你喜欢
    • 2011-02-23
    • 2013-09-28
    • 2016-04-19
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    • 2014-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多