2010-10-05 65 views
1

我正在为移动设备开发一系列应用程序,我们称它们为橙色,樱桃和梨。现在,由于我熟悉黑莓手机,我选择在黑莓平台上开始实施Orange这三个应用程序中的第一个。我发现了一种整合多种Blackberry平台的方法(因为他们在不同的BB操作系统中使用相同的API,但有一些例外)可以集成到同一个代码库中。目前,我的代码库看起来是这样的:在移动版本中颠覆分支的策略

Orange/ 
    trunk/ 
    src/ 
    ... orange's source tree... 
    branches/ 
    1.0/ 
    ... orange's source tree as it looked at release 1.0 ... 
    tags/ 
    1.0.0/ 
    1.1.0/ 

所以,基本上,我使用的是基于版本的方法,以我的分支。但是,现在我们希望将此应用程序迁移到Android平台(并且在某个时间点,可能还会转移到其他移动平台或甚至桌面平台)。所以,我的问题是,跨多个平台分支单个应用程序的最佳方法是什么?我已阅读Branching Strategies以及一些分支策略网页(例如http://www.codinghorror.com/blog/2007/10/software-branching-and-parallel-universes.html),但我仍然不相信分支是基于拥有“通用”中继(例如最后一个链接中描述为“每个技术分支”)。 。

我仍然不相信的原因是我是基于版本的分支策略的信徒。这似乎合乎逻辑;如果你想保持独立的发展阶段,那么分支机构似乎是实现这一目标的理想方式。如果我的代码在所有三个平台之间都是'普通'的方面,那么我决定制作一个android版本,是否将所有常见和Android中继代码分开以制作新版本标签?或者,我是否还将所有代码都保存在Android和黑莓分支的“常用”分支中?

我认为也许我可以做的另一件事是创建单独的项目,例如橙黑莓和橙色android。但是,这可能会混乱我的svn仓库,因为我们将所有项目都保存在同一个仓库中。所以,不可避免地,我将为我创建的任何其他应用程序提供橙黑莓,橙色机器人,樱桃机器人,樱桃黑莓,梨子机器人,梨黑莓,以及一系列项目文件夹。

所以,我正在寻找一些反馈,以了解什么可能是管理所有这些混乱的最佳方法。另外,如果你可以提出一些关于从当前实现转移到新实现的思路(即我应该用什么svn命令来维护历史),那将非常感激。

回答

4

BlackBerry Java代码是j2me,因此源代码必须符合Java 1.3。 Android可以使用Java特性直至Java 6。如果您希望自己的应用看起来体面,那么您将使用RIM专有的UI组件(net.rim.device。*),并且这些组件在Android上不可用。

我不认为应用程序的Android版本是BlackBerry的一个分支。你应该从头开始。这些平台将共享非常少的代码,并且可以共享的代码将被最好地考虑到两个项目合并的库jar中。

+0

嗯,实际上我确实将一些通用代码移出到一个单独的库中。我想避免的是在我的svn仓库中这种大规模的项目爆炸。我想我可以将它们放在版本库中的另一个目录下,而不是将所有的水果项目放在svnroot/level上。 – jwir3 2010-10-05 03:50:37

+0

虽然,我会有兴趣听听有哪些其他建议。我假设其他人对于部署到多个平台的应用程序也有同样的问题 - 我的意思是,这对移动开发并不完全是独一无二的。针对linux/windows/unix/osx处理多个版本,并保持这些版本同步的策略有哪些? – jwir3 2010-10-05 03:52:03