什么是异构应用程序的优秀Git开发模型?

时间:2012-10-10 08:37:50

标签: git git-branch git-submodules

我想开发一个由iOSAndroid应用程序组成的应用程序。此外,还会有一个Web前端,其中包含REST API和基础Database

每个模块都有一个开发人员团队,比如,一个开发人员团队为iOS,一个开发人员为Android,另一个开发人员为Web/Db

我对设置的第一个想法是以下存储库:

myapp-adm ~ Project administrative stuff (e.g. FSD, project plan, ...)
myapp-ios ~ iPhone App
myapp-jvm ~ Android App
myapp-web ~ Web/Db 

但是,通过此设置,我遇到了管理模块之间依赖关系的问题。例如,由于FSD,所有模块都依赖于myapp-adm。此外,模块myapp-iosmyapp-jvm取决于myapp-web

myapp-ios <- myapp-web <- myapp-adm  
myapp-jvm <- myapp-web <- myapp-adm

我可以(部分地)使用Git子模块解决这个问题,但据我所知,无法在Git中设置版本化依赖项。正确(参见[here](http://stackoverflow.com/questions/12813250/how-to-stick-a-submodule-to-a-fix-a-tag“如何将子模块粘贴到修复标签上?“))?例如:

            v1.0.3           v1.0
myapp-ios <------ myapp-web <---- myapp-adm  
           v1.0.3            v1.0
myapp-jvm <------ myapp-web <---- myapp-adm

除了使用Git子模块的这种潜在设置之外,我想知道是否没有另一种利用Git分支的“单一存储库”方法。例如:

origin/master  ~ HEAD reflects production-ready state.
origin/dev-ios ~ HEAD reflects the latest iOS development changes for the next release
origin/dev-jvm ~ ...
origin/dev-web ~ ...

我遇到的问题是,iOS开发依赖于web开发,但Web开发人员承诺origin/dev-web。同样适用于jvm。所以这不是一个真正的解决方案。

或者您是否会建议,例如,iOS开发团队不得不从origin/dev-web合并?

任何提示/建议都表示赞赏。

干杯,  /纳米

1 个答案:

答案 0 :(得分:1)

我建议你的网络应用和移动应用之间的界限要比那更好。换句话说,您的移动应用不应与特定版本的网络应用紧密相关;您应该使用正确版本化和向后兼容的API。

有了这个,只需将应用程序保存在不同的存储库中就可以了。