【问题标题】:Organize multi-app project with share code使用共享代码组织多应用项目
【发布时间】:2015-08-04 14:09:45
【问题描述】:

我在组织开发环境方面遇到了严重的问题(!!!);

我有两个应用程序:app1 和 app2。这个应用程序是使用 OpenUI5 编写的(但这个细节并不重要)

app1 和 app2 相似并且共享一些代码(例如登录代码)。 我将 git(带有 git-flow)与两个远程仓库一起使用,并且我有所有相同的代码重复。 现在我想优化我的开发流程共享平等代码(登录代码)。

这是我的第一个想法:只有一个 repo 包含我在这种类型结构中的所有代码:

repo
|_____share
|     |____login.js
|
|_____app1
|     |_____index.html
|     |_____resources
|           |_________util1.js
|_____app2
      |_____index.html
      |_____resources
            |_________util2.js

我有两个时间状态:

  • 每个 index.html 使用 resources/utilX.js../share/login.js 的开发时间
  • 每个 index.html 使用 resources/utilX.jsresources/login.js 的发布时间

好!我可以为每个应用程序创建(使用 grunt?)RELEASE;例如 RELEASE 的结果是

app1
|_____index.html
|_____resources
      |_________util1.js
      |_________login.js.js

我可以将 app1 文件夹推送到我的服务器,它工作正常!

但现在我有些怀疑:

  1. 使用 git-flow 我有 master 和 develop 分支;只有一个 repo 我只有一个 masters,因此当在 app1 上我想要发布时,我必须用新版本标记完整的 master。我不喜欢,我想要两个拥有自己号码版本的应用
  2. 最好有两个单独的 repo (repo_app1 & repo_app2)?在这种情况下,共享文件在哪里?
  3. 在其他(编译的)语言中,我可以创建发布版本,而只有应用程序的编译文件。 Grunt 是准备应用文件夹推送到我的服务器上的正确方法吗?

【问题讨论】:

    标签: git github gruntjs sapui5


    【解决方案1】:

    Git 子模块可能对您有所帮助。它将允许您将 app1、app2 和共享代码移动到不同的存储库,然后将共享代码存储库注入您的应用程序存储库。更多信息请阅读documentation

    【讨论】:

    • 谢谢阿列克谢。我有一个问题:如果我使用子模块,我该如何修改共享代码?我无法修改共享代码而不对其进行测试,并且只有在 app1 或 app2 中使用它时才能对其进行测试。我想在 app1 存储库中包含例如共享代码存储库,打开 app1 存储库并修改并提交共享代码。我可以吗?
    • 这就是 git 子模块的用途。您将共享库存储库注入应用程序存储库,它看起来就像一个普通文件夹,除了这个文件夹指向另一个存储库的东西。
    • 如果您是关于技术方面的,那当然比只使用一个存储库要困难一些。例如,请参阅此question
    【解决方案2】:

    另一种解决方案是使用子树
    它允许在项目之间共享代码,通常是在依赖关系的情况下,它允许双向通信:

    • 您可以修改您的共享代码,并决定在不同的时间将其集成到 app1 或 app2 中,它们中的每一个都是完全独立的。
    • 以同样的方式,您可以在 app1 中执行共享代码的修改,将其推送到共享代码存储库,然后再决定将其集成到 app2 中

    官方文档在这里:
    http://www.git-scm.com/book/en/v1/Git-Tools-Subtree-Merging

    可以在此处找到执行子模块与子树比较以及详细说明的精彩教程:
    http://typecastexception.com/post/2013/03/16/Managing-Nested-Libraries-Using-the-GIT-Subtree-Merge-Workflow.aspx

    【讨论】:

      猜你喜欢
      • 2022-01-17
      • 2010-12-14
      • 2011-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-09
      • 2012-11-11
      相关资源
      最近更新 更多