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

时间:2015-05-22 13:56:37

标签: git github gruntjs sapui5

关于组织我的开发环境,我有一个严重的问题(!!!);

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

app1和app2类似并共享一些代码(例如登录代码)。 我使用git(带git-flow)和两个远程repo,我有相同的代码重复。 现在我希望优化我的开发流程共享代码(登录代码)。

这是我的第一个想法:只有一个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
  • 的RELEASE时间

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

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

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

但现在我有一些疑问:

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

2 个答案:

答案 0 :(得分:2)

Git子模块可能对您有所帮助。它允许您将app1,app2和共享代码移动到不同的repos,然后将共享代码repo注入您的app repos。有关详细信息,请参阅documentation

答案 1 :(得分:1)

另一种解决方案可能是使用子树 它允许在项目之间共享代码,通常是在依赖性的情况下,它允许在两个方向上进行通信:

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