Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对于异构应用程序,什么是好的Git开发模型?_Git_Git Branch_Git Submodules - Fatal编程技术网

对于异构应用程序,什么是好的Git开发模型?

对于异构应用程序,什么是好的Git开发模型?,git,git-branch,git-submodules,Git,Git Branch,Git Submodules,我想开发一个由iOS和Android应用程序组成的应用程序。此外,还将有一个Web前端,带有restapi和底层数据库 每个模块将有一个开发团队,比如说,一个开发团队负责iOS,一个开发团队负责Android,一个开发团队负责Web/Db 我对设置的第一个想法是以下存储库: myapp-adm ~ Project administrative stuff (e.g. FSD, project plan, ...) myapp-ios ~ iPhone App myapp-jvm ~ Androi

我想开发一个由
iOS
Android
应用程序组成的应用程序。此外,还将有一个
Web
前端,带有restapi和底层
数据库

每个模块将有一个开发团队,比如说,一个开发团队负责
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-ios
myapp-jvm
依赖于
myapp-web

myapp-ios <- myapp-web <- myapp-adm  
myapp-jvm <- myapp-web <- myapp-adm
我在这里遇到的问题是,
iOS
开发依赖于
web
开发,但是web开发人员致力于
origin/devweb
。这同样适用于
jvm
。所以这不是一个真正的解决方案

或者您是否建议,例如,
iOS
开发团队必须不断地从
源代码/dev-web
合并

如有任何提示/建议,我们将不胜感激

干杯,
/nm

我建议在web应用程序和移动应用程序之间设置更好的边界。换句话说,你的移动应用不应该与你的网络应用的特定版本紧密相连;您应该有一个他们使用的版本正确且向后兼容的API


有了这一点,只需将应用程序保存在单独的存储库中就很简单了。

您能详细阐述一下您的建议吗?如果我理解正确,您建议,例如,一个用于iOS和Android应用程序的存储库和一个用于Web应用程序的存储库。此外,移动应用程序应该/不应该/强烈依赖Web API。此外,Web API必须向后兼容。这在开发过程中可行吗?在第一次公开发行后,我完全同意。最后,正确版本化的
到底意味着什么。简而言之,我非常希望有一个简单的例子。谢谢你的回复!干杯,/NM在开发过程中,您不一定需要强制执行向后兼容性,但您认为移动应用程序不应与web代码紧密连接,这一点是正确的。他们应该使用API,但只能通过定义的API端点使用(因此他们不应该关心这些端点是如何实现的,只要端点执行它们应该执行的操作)。“正确版本化”意味着如果您对API进行更改,您可以增加一个版本号,并在至少一两个版本之前保持对旧API的支持,这样用户就可以在转换到新API的过程中不会中断应用程序。
            v1.0.3           v1.0
myapp-ios <------ myapp-web <---- myapp-adm  
           v1.0.3            v1.0
myapp-jvm <------ myapp-web <---- myapp-adm
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 ~ ...