我正在开发一个移动电话应用程序,该应用程序根据许多移动设备提供的功能来针对它们。将会有一个所有手机都应支持的基本功能集,然后还会有取决于特定手机集的附加功能。
如何通过版本控制系统管理这样的代码库?
我有使用 CVS 和 VSS 的经验,但两者都不太适合我对此类应用程序的需求。我想做的最后一件事就是为每个设备集分支代码。
让我通过一个例子来更清楚地说明这一点。假设我正在使用 MIDP 2.0 开发 J2ME 应用程序。这是我希望所有支持 MIDP 2.0 的手机都具备的基本功能集。除此之外,我将使用 SDK 将此应用程序扩展到特定的手机组。例如。诺基亚 S40、诺基亚 S60、索尼爱立信、黑莓等。所有这些都提供了附加功能,让您可以在基本应用程序之上构建更多功能,并且大多数时候这些会影响从 UI 到核心逻辑的整个代码库。
实现此目的的一种方法是结合使用构建系统和预处理器标志,并尝试将差异充分分开,以免产生太多依赖项。有时这会变得相当复杂。我想知道是否有更简单的方法来使用智能源代码控制系统来处理这个问题......
最佳答案
我会查看 Subversion 的 svn:externals .
使用 svn 1.5,您可以使用目录的相对引用,svn 1.6 支持基于文件的外部。
例如这样的结构,
- /Phone1/Base
- /电话1/功能1
- /电话1/功能2
- /Phone2/Base
- /电话2/功能1
- /电话2/功能3
使用 svn:externals 可以轻松实现。
在 Subversion 中,您的存储库结构非常灵活,以下是您可以采用的一种(多种)方式:
- 主干/功能/底座
- 主干/功能/功能1
- 主干/功能/功能2
- 主干/功能/功能2
- trunk/Phones/Phone1(使用 svn:externals 到 Base、Feature1,...)
- trunk/Phones/Phone2(使用 svn:externals 到 Base、Feature3,...)
但有一个提示:请确保为每个外部引用使用特定的 Subversion 修订版,一开始时这似乎并不重要,但 6 个月后就会变得重要:)
关于version-control - 手机应用程序的最佳版本控制系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/891276/