2009-05-21 279 views
2

我正在开发一个移动电话应用程序,该应用程序基于其提供的功能针对许多移动设备。将会有一个基本的功能集,所有的手机都可以支持,然后会有额外的功能取决于特定的手机。手机应用程序的最佳版本控制系统?

如何管理在版本控制系统方面这样的代码库?

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

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

的一种方法是使用一个构建系统的组合与预处理器标志,并试图分开足以不会有太多的依赖关系的差异。有时候这会变得相当复杂。我想知道是否有处理这种使用智能源代码控制系统更简单的方法....

回答

2

我想看看Subversion的svn:externals

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

的结构。例如像,

  • /电话1 /基
  • /电话1 /特征1
  • /电话1 /特征2
  • /电话2 /碱
  • /电话2 /特征1
  • /Phone2/Feature3

会很容易使用svn:externals。

在Subversion,你的资料库结构是非常灵活的,这里是一个办法(很多),你可以把那出:

  • 主干/功能/基地
  • 主干/功能/特征1
  • 行李箱/功能/特点2
  • 主干/功能/特点2
  • 主干/手机/电话1(使用svn:外部对象到基地,优点1,...)
  • 主干/手机/电话2(以svn:externals的基地,特征3,...)

一个提示,但:请确保您使用特定的Subversion修订为每个外部参考,它可能开始出来的时候似乎并不重要,但6个月后它将追踪:)

+0

谢谢,这可能是我们正在努力在具有多个输入库和不同检出的汤拉源在某些构建的应用程序非常有用的。 – 2009-05-21 04:39:33

+0

感谢您的提示。这可能可行。我目前正在重构代码以将其分解为核心库和手机特定的东西。之后会试用这个。 – Prashast 2009-05-22 01:47:11

0

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

你可以考虑描述你怎么想达到你想要的(不同的应用版本具有不同功能集),以获得更合理的建议

0

如果使用Perforce的,你可以使用库之间的不同映射什么,您的工作区,并做一些事情,如:

depot/ 
    common/ 
    platform1/ 
    someportedfile 
    platform2/ 
    someportedfile 

,并让它在您的工作空间映射到:

platform1/ 
    someportedfile 
    common/ 
platform2/ 
    somtportedfile 
    common/ 
1

我不认为风险投资商就溶胶有你的问题。

也许最好的办法抽象出来的手机的具体功能,尽可能多地和/或插件类型的模型去。

我只有使用Subversion,CVS,StarTeam中,与VSS经验。无论如何,分支都是痛苦的......特别是如果你有多个活动分支。你不会得到周围做不断合并,分支机构比较,并试图跟踪,如果你已经做了更改的所有分支机构。为指针

相关问题