使用共享代码组织多应用程序项目
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
我有两个时间状态:
- 每个 index.html 使用
resources/utilX.js
和 ../share/login.js
的开发时间
- 释放时间,其中每个 index.html 使用
resources/utilX.js
和 resources/login.js
好!我可以为每个应用程序创建(使用 grunt?)一个 RELEASE;例如 RELEASE 的结果是
app1
|_____index.html
|_____resources
|_________util1.js
|_________login.js.js
我可以将 app1 文件夹推送到我的服务器,它工作正常!
但现在我有些疑惑:
- 使用 git-flow 我有 master 和 develop 分支;只有一个回购,我只有一个母版,因此当我想在 app1 上发布时,我必须用新版本标记完整的母版。我不喜欢,我想要两个有自己数字版本的应用程序
- 最好有两个单独的 repo (repo_app1 & repo_app2)?在这种情况下,共享文件在哪里?
- 在其他(编译)语言中,我可以创建仅包含应用程序编译文件的发布版本。 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
我在组织开发环境方面遇到了严重的问题 (!!!);
我有两个应用程序: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.js
和resources/login.js
好!我可以为每个应用程序创建(使用 grunt?)一个 RELEASE;例如 RELEASE 的结果是
app1
|_____index.html
|_____resources
|_________util1.js
|_________login.js.js
我可以将 app1 文件夹推送到我的服务器,它工作正常!
但现在我有些疑惑:
- 使用 git-flow 我有 master 和 develop 分支;只有一个回购,我只有一个母版,因此当我想在 app1 上发布时,我必须用新版本标记完整的母版。我不喜欢,我想要两个有自己数字版本的应用程序
- 最好有两个单独的 repo (repo_app1 & repo_app2)?在这种情况下,共享文件在哪里?
- 在其他(编译)语言中,我可以创建仅包含应用程序编译文件的发布版本。 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