适用于手机应用的最佳版本控制系统?

时间:2009-05-21 03:21:16

标签: version-control mobile

我正在开发一款基于其提供的功能针对大量移动设备的移动电话应用程序。将有一个基本功能集,所有手机都应该支持,然后会有一些额外的功能,这取决于特定的手机组。

如何根据版本控制系统管理这样的代码库?

我有CVS和VSS的经验,但两者都不太适合我对这种应用程序的需求。我要做的最后一件事是为每个设备集分支代码。

在示例的帮助下,让我更清楚一点。假设我正在使用MIDP 2.0开发J2ME应用程序。这是我希望所有支持MIDP 2.0的手机都具备的基本功能集。除此之外,我会使用他们的SDK为特定的手机套件扩展此应用程序。例如。诺基亚S40,诺基亚S60,索尼爱立信,黑莓等。所有这些都提供了额外的功能,使您可以在基础应用程序之上构建更多功能,而且大多数时候这些功能会影响从UI到核心逻辑的整个代码库。

实现此目的的一种方法是使用构建系统与预处理程序标志的组合,并尝试将差异分离到足以不具有太多依赖项。这有时会变得非常复杂。我想知道是否有一种更简单的方法来处理这个使用智能源控制系统......

5 个答案:

答案 0 :(得分:2)

我会看看Subversion的svn:externals

使用svn 1.5,您可以使用目录的相对引用,svn 1.6支持基于文件的外部。

例如,像

这样的结构
  • /电话1 /基
  • /电话1 /特征1
  • /电话1 /特征2
  • /电话2 /碱
  • /电话2 /特征1
  • /电话2 /特征3

使用svn:externals很容易实现。

在Subversion中,您的存储库结构非常灵活,这是您可以解决这个问题的一种方式:

  • 躯干/功能/基
  • 躯干/功能/特征1
  • 躯干/功能/特征2
  • 躯干/功能/特征2
  • trunk / Phones / Phone1(svn:externals to Base,Feature1,...)
  • trunk / Phones / Phone2(svn:externals to Base,Feature3,...)

但有一个提示:确保您为每个外部参考使用特定的Subversion修订版,在启动时可能看起来不重要,但是在轨道上它将会延迟6个月:)

答案 1 :(得分:1)

对于那些没有很多开发人员的项目,我喜欢Subversion。从你的问题陈述到我,听起来你应该能够用一个好的构建系统来实现你想要的东西。所以我不认为源控件本身会产生很大的影响。但我可能会误解你的问题。

Sayed Ibrahim Hashimi

我的书:Inside the Microsoft Build Engine : Using MSBuild and Team Foundation Build

答案 2 :(得分:1)

我认为VCS不会解决您的问题。

您最好的选择是尽可能抽象出手机特定功能和/或使用插件类型模型。

我只有Subversion,CVS,Starteam和VSS的经验。无论如何,分支都是痛苦的......特别是如果你有多个活跃的分支。您不会绕过进行常量合并,分支比较以及尝试跟踪您是否对所有分支进行了更改。

答案 3 :(得分:0)

如果您将代码组织到某些核心模块和某些依赖于核心模块的电话专用模块中,那么您使用哪个VCS并不重要。无论如何我会推荐一个分散的VCS(Mercurial,Bazaar,Git)。

您可以考虑描述如何实现您想要的(具有不同功能集的不同应用程序版本)以获得更合理的建议

答案 4 :(得分:0)

如果您使用Perforce,您可以在软件仓库和工作区之间使用不同的映射,并执行以下操作:

depot/
  common/
  platform1/
    someportedfile
  platform2/
    someportedfile

并将其映射到您的工作区中:

platform1/
  someportedfile
  common/
platform2/
  somtportedfile
  common/