如何在Mercurial中管理两个版本的Android应用程序

时间:2015-05-28 12:53:33

标签: android mercurial tortoisehg branching-and-merging

我正在使用Mercurial(使用TortoiseHG)来管理我的Android项目,并且由于应用程序获得了具有不同包名称的并行品牌版本,最近不得不进行分支。

我做了一些研究并成功地分离了所有内容,但现在几天之后我开始发现很难保持两个分支。 true中的任何更改都需要手动转换为false

更糟糕的是,我完全有理由怀疑会有更多分支,这需要我在许多分支之间引入任何更改和错误修正。

Mercurial和/或Tortoisehg是否对这种情况提供任何支持?简单的合并不起作用,因为不同的软件包名称(VCS将所有内容视为单独的文件并放置两个版本的应用程序在一个文件夹中。)

理想的解决方案是一个工具,它允许我只同步所选文件的选定部分,而不考虑导入,包等,只是纯文本替换。

1 个答案:

答案 0 :(得分:0)

  1. 我无法想象(请深入解释),不同的包名如何干扰Mercurial分支。你家里面有不同的树吗?或者在分支中重命名文件(无论如何,Mercurial轨道重命名并且可以在分支中正确合并重命名的文件)?
  2. 当我面对这样的任务(维护不同客户的分支,基于历史上常见的代码库)时,我完成了MQ-patchset(针对客户特定更改的每个目标的补丁)和使用变更集中的公共代码的单个分支
  3. 您可以为您的仓库创建+定义不同的合并工具,这将根据不同的(您的)政策合并不同的文件,而不仅仅是GIU合并中的交互式合并(请参阅{{1} } mergetools例如)
  4. <强>附加

    1. 我会要求显示(至少部分)internal:*分支(或者只是工作目录的ls)(仅仅因为我对包,它的结构和Android开发的共同点一无所知),但是,AFAICR,如果您在初始分支中有hg manifest,在第二个分支中将其重命名为/firstbranch,Mercurial将在分支合并中兑现此更改。另一个想法是尽可能地从版本控制中消除父树,并将创建适当的包树的任务移动到构建工具中

    2. 不,我有添加|更改|删除对象(客户的品牌)的“琐碎”任务,但是,从我的POV,“所有导入,包关系等”在技术上只是代码中的更改(可能 - 树),哪些补丁可以容纳

    3. 自定义合并工具必须是大多数简单的手工制作脚本,其中包含最少的逻辑。尝试阅读Wiki:Merge Tool Configuration(第2部分)和Merge Tools作为起点,this excellent example of creating own merge-tool用于合并.hgtags