使用VCS用于“Lite”和“Full”版本?

时间:2011-02-17 00:44:19

标签: version-control

嘿伙计们。我在Objective C(使用xcode)中有一个应用程序,我想分成两个不同的版本 - lite和full。如果我分叉主项目,VCS(即GIT或SVN)会为此工作吗?我不熟悉分叉的工作原理,但是我对主项目所做的任何更改是否会与forked lite项目合并?

如果没有,哪个系统最适合保持两个项目之间的代码同步?我的目标是尽可能保持自动化......

2 个答案:

答案 0 :(得分:4)

几乎所有VCS都支持分支,您可以使用它来“调味”您的产品。但要注意,很多都取决于您如何在文件级别上实现更改。我个人不会用VCS来调味。 应用程序或构建级别的配置大多更容易维护。

但这里有两个关于事情可能会如何发生的例子。

易于调味的示例:

branch-full
- module 1
- module 2
- module 3
- module 4
- documentation-full

branch-lite
- module 1
- module 2
- purchase-module
- documentation-lite

在这种情况下,您提供的内容主要是在目录级别定义的。没有模块被修改但只添加或删除。这两个列表可以很容易地在构建文件中维护,也许根本不需要VCS,但这是一个不同的故事。

调制成硬的例子(反模式)(精简版中的一个源文件)

my generic code ...
...
...

my lite-specific code ...
...
...    

my generic code ...
...
...

如果您遇到GENERIC代码中的错误但仅在您的精简分支中(因为错误可能以某种方式连接到您的精简版),您将不得不修复并在lite分支中提交它。您将不得不挑选合并(并与完整版兼容)您的单个错误修正或根本不将它合并回完整版。后来的选项随着时间的推移增加了精简版和完整版之间的“差距”,这反过来又使得更难从“上游” - 完整版本获得更新,以防更大的发展。

C

答案 1 :(得分:1)

您可以使用其中之一。我对svn最熟悉,但我认为他们都有能力。 你会有一个主分支和一个精简分支。

SVN非常容易合并。冲突解决很简单。

我打赌大多数人会同意这是一个很好的工具。