Git 2版本软件:最佳VCS方法?

Git 2版本软件:最佳VCS方法?,git,version-control,branch,Git,Version Control,Branch,我想我最好解释一下我的情况: 我正在开发一些软件,我想把我的项目分成两个功能不同的分支。碰巧这个应用程序是一个Android应用程序,我将在市场上部署它,它有一个约束,即每个应用程序都必须有一个唯一的包标识符(明智,否?) 我目前的方法是克隆原始项目的git repo,但这会导致包名问题。我希望系统足够健壮,以便一个分支上的错误修复/新功能将合并到另一个分支中,但只有在我希望的时候 有人有什么建议吗?如果唯一的问题是打包和发布管理问题,您可以将这些步骤(重命名包,并在目标环境中进行测试)从一个G

我想我最好解释一下我的情况:

我正在开发一些软件,我想把我的项目分成两个功能不同的分支。碰巧这个应用程序是一个Android应用程序,我将在市场上部署它,它有一个约束,即每个应用程序都必须有一个唯一的包标识符(明智,否?)

我目前的方法是克隆原始项目的git repo,但这会导致包名问题。我希望系统足够健壮,以便一个分支上的错误修复/新功能将合并到另一个分支中,但只有在我希望的时候


有人有什么建议吗?

如果唯一的问题是打包和发布管理问题,您可以将这些步骤(重命名包,并在目标环境中进行测试)从一个Git repo的历史化周期中分离出来

因此,您可以继续,分离您的开发,每个分支一个功能,为两个分支保留相同的包名(以便轻松地将修复程序从一个合并到另一个)。

但是,为了测试和部署这两个版本中的一个,您可以使用一个脚本来负责重命名包、重新编译、打包(jar)并在目标测试环境中部署结果。

对于具有相同代码库的付费应用程序和试用版,我自己处理这个问题。我使用的是SVN,但是任何支持分支的版本控制软件都可以工作

我从主干为试用版创建了一个分支

然后我修改了试用版verion的AndroidManifest.xml来更改包名,最后添加了.trial。然后,我还必须更新所有活动java文件以引用正确的R类

我的付费应用程序包是com.hewitsoft.baby
我的试用版应用程序包是com.hewitsoft.baby.trial

在我的审判活动中,我这样做

import com.hewittsoft.baby.trial.R;
这会导致任何对R.id.textField(或其他)的引用都起作用


完成这些步骤后,我可以在主分支上进行开发,然后将任何更改合并到试用版中,而不会有太多痛苦。

关于分支策略的几篇非常好的文章:

我想你指的是VCS(版本控制系统),而不是CMS。该死的缩写词!更新。谢谢,我不熟悉安卓系统,但它听起来像是一个插件架构可能会有所帮助。根据你想要包含的功能,你可以为你的产品提供各种各样的插件。实际上,我不知道插件是如何与Android一起工作的。这不是一个坏主意,但可能需要一些学习。这肯定是许多Android开发人员遇到的一个问题,我喜欢一个代码库的想法,然后有条件地编译单独的版本,例如游戏的免费/演示版本和付费版本。由于android market在列表中使用完整的软件包名称,为了列出一个应用程序的两个不同版本,您实际上必须有两个单独的软件包。我最终完成了代码的分叉,现在在svn中维护了两个版本,这无疑是一件痛苦的事情,因此我期待着看到关于这个问题的建议。您是如何处理不同的文件结构的(例如:Launch.java在/src/com/hewitsoft/baby/中的一个和/src/com/hewitsoft/baby/trial/中的另一个)?我没有不同的文件结构。所有的活动和支持代码仍然在/src/com/hewitsoft/baby/中,AndroidManifest.xml仍然指向它们,就像这样:我确实有一个com/hewitsoft/baby/trial包,但它只有特定于试用的代码(检查试用是否过期,等等)