使用共享代码组织多应用程序项目

Organize multi-app project with share code

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

我有两个应用程序: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

我有两个时间状态:

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

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

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

但现在我有些疑惑:

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

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

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

  • 您可以修改您的共享代码,并决定在不同时间将其集成到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