【问题标题】:Multiple apps with common code -- how to approach this?具有通用代码的多个应用程序——如何解决这个问题?
【发布时间】:2009-04-16 18:12:20
【问题描述】:

我的公司有两个或三个使用大量通用代码的 Web 应用程序——一个自定义 MVC 框架、实用程序类、JavaScript 库等等。

我们不希望在每个应用程序中重复所有这些代码,因为我们最终会使用几个略有不同的版本。但我们不希望应用需要与此代码完全相同的副本,因为我们不希望一个应用的更新可能会破坏另一个应用。

有没有人有任何关于处理这个问题的提示?我认为我不是在寻找技术上的答案——更多的是一种通用的方法。

我们可以将代码制作成库,并允许应用保留在旧版本的库中,直到它们准备好升级。或者我们可以把它做成多个库,这样我们就不必一次升级所有东西。但是管理库版本之间的相互依赖会变得困难吗?

【问题讨论】:

    标签: code-reuse


    【解决方案1】:

    我将 SVN 与 svn:externals 一起使用。你想要稳定的东西应该放在 tags 文件夹中,这样依赖的项目就不会受到主干中其他开发的影响。

    【讨论】:

    • +1 到 svn:externals。到目前为止,它们是最有效且简单的方法。
    • 我为 TortoiseSVN 找到了一个很棒的教程:justaddwater.dk/2007/10/23/…
    【解决方案2】:

    这取决于很多很多因素——不同的语言在库方面有不同的行为。我通常处理这个问题的方法是让每个应用程序对其外部依赖项进行一系列测试,包括我编写的库,并使用它来防止对上述库的升级破坏应用程序。

    有关您使用的平台的更多详细信息?可能有一些特定的工具可以帮助您满足特定需求。

    【讨论】:

    • 我们将 PHP 与 CVS 一起使用(尽管我们可能会切换到 SVN)。但我想更多的是关于管理代码的方法,而不是特定的工具。关于单元测试的要点。
    【解决方案3】:

    我使用 svn:externals 支持 SVN。我们有一个共享一些代码的客户端和服务器。代码在服务器下维护(但可以移出到自己的仓库),客户端使用 svn:externals 将其拉入。客户端主干从服务器主干中拉出。但是当我们分支(比如发布)时,我们会将外部拉入的内容固定在特定的转速、分支或标签上。如果你不这样做,然后回到旧分支并更新,你可能会得到共享代码的主干,这很可能不是你想要的。

    【讨论】:

      【解决方案4】:

      我将为代表最新最好版本的通用代码创建一个源代码控制分支。

      然后,对于每个项目,都有自己独立的代码分支,您可以在其中快速修复需要的地方,或者在接近发布时保持稳定性。

      您可能希望有一个 Wiki,其中列出了在公共代码中发现的错误,以便共享代码的其他用户知道它并有时间在闲暇时修复它。

      Git 可以很好地解决这个问题,因为它擅长将更改合并回“主”分支。

      【讨论】:

        猜你喜欢
        • 2022-11-25
        • 1970-01-01
        • 1970-01-01
        • 2021-07-02
        • 1970-01-01
        • 2020-06-27
        • 2021-09-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多