我正在为移动设备开发一系列应用程序,我们称它们为 Orange、Cherry 和 Pear。现在,由于我对 Blackberry 的熟悉,我选择开始在 Blackberry 平台上实现这三个应用程序中的第一个,Orange。我找到了一种将多个黑莓平台(因为它们在不同的 BB 操作系统中使用相对相同的 API,但有一些异常(exception))集成到同一代码库中的方法。目前,我的代码库看起来像这样:
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 ),但我仍然不相信基于具有“公共(public)”主干的分支(例如,如最后一个链接中描述的“每个技术的分支”)。
我仍然不相信的原因是我相信基于版本的分支策略。这似乎合乎逻辑;如果您想维护不同的开发阶段,那么分支似乎是实现此目的的理想方式。如果我的代码的某些方面在所有三个平台之间都是“通用的”,那么我决定发布一个 android 版本,我是否将所有代码从通用和 android 主干中分支出来以制作一个新的发布标签?或者,我是否也将所有代码都保留在 android 和 blackberry 分支的“公共(public)”分支中?
我认为也许我可以做的另一件事是创建单独的项目,例如 orange-blackberry 和 orange-android。但是,这可能会使我的 svn 存储库变得困惑,因为我们将所有项目都保存在同一个存储库中。因此,不可避免地,我将拥有 orange-blackberry、orange-android、cherry-android、cherry-blackberry、pear-android、pear-blackberry,以及我创建的任何其他应用程序的一系列项目文件夹。
因此,我正在寻找一些反馈,以了解什么可能是管理所有这些困惑的最佳方式。此外,如果您能就从我当前的实现转移到较新的实现的后勤工作提出一些想法(即我应该使用哪些 svn 命令来维护历史记录),我们将不胜感激。
最佳答案
BlackBerry Java 代码是 j2me,因此源代码必须符合 Java 1.3。 Android 可以使用 Java 功能一直到 Java 6。如果您希望您的应用程序看起来不错,您将使用 RIM 专有的 UI 组件 (net.rim.device.*),而这些组件在 Android 上不可用。
我不会将应用程序的 Android 版本视为 BlackBerry 的一个分支。你应该从头开始。这些平台将共享非常少的代码,并且可以共享的代码最好被分解到两个项目都包含的库 jar 中。
关于android - 使用移动版本在颠覆中分支的策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3860055/