【问题标题】:What is a good Git development model for heterogenous applications?什么是异构应用程序的良好 Git 开发模型?
【发布时间】:2012-09-30 16:23:39
【问题描述】:

我想开发一个由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 中设置版本依赖项。对(参见[这里](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-webjvm 也是如此。所以这并不是真正的解决方案。

或者你会建议,例如,iOS 开发团队必须不断地从origin/dev-web 合并?

感谢任何提示/建议。

干杯, /纳米

【问题讨论】:

    标签: git git-branch git-submodules


    【解决方案1】:

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

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

    【讨论】:

    • 您能否详细说明您的建议?如果我对您的理解正确,您建议,例如,一个用于 iOS 和 Android 应用程序的存储库和一个用于 Web 应用程序的存储库。此外,移动应用程序应该/不/强烈依赖于 Web API。此外,Web API 必须向后兼容。这在开发过程中是否可行?在第一次公开发布后,我完全同意。最后,properly versioned 到底是什么意思。简而言之,我非常感谢一个简单的例子。感谢您的回复!干杯,/nm
    • 您不一定需要在开发过程中强制向后兼容,但是您是正确的,移动应用程序应该强连接到网络代码。他们应该使用 API,但只能通过定义的 API 端点(因此他们不应该关心这些端点是如何实现的,只要端点做他们应该做的)。
    • “正确版本化”意味着如果您对 API 进行更改,您会增加一个版本号并继续支持至少一两个版本之前的旧 API,以便用户可以过渡到新 API他们的应用程序不会在此过程中中断。
    猜你喜欢
    • 1970-01-01
    • 2011-11-23
    • 2021-03-16
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2015-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多