由于我们项目的特殊性,我们是同一份JAVA代码,不同的CSS,多个Brands和Channels使用。现在面临其中一个Brand(取名为A)要上线,其他的Brands(取名为Others)持续开发,对于要上线的A还是有少量的Bug在改。因为是同一套代码,所以就有一个保持要上线的A的稳定版本,并对其他的功能继续开发的问题,等上线成功后,还会将现在用于Others的部分功能应用于A这个Brand。怎么样很好的处理呢,最后所有的开发结束后,各个Brand和Channel都是使用的同一套代码。
暂时有两种方法可以采用:
1.branches
这个方法就是从一个trunk从release的地方分成两条,一条为继续开发的trunk,另一条是上线的A。但是这两条线随着时间是渐行渐远的,trunk总要merge到A上面去的,而且merge得越迟,耗费的时间和精力更多,还有可能在trunk上面对A的bug的修复,要在A上面再修复一次,这样就做了双倍的工作了。这样来看的话,是弊大于利的,这种方式比较适用于Linux系统这样的没有这么多Brands和Channel的项目。
2.Feature Toggle
我们采用的正是这种方法,在暂时应用与Others的功能的方法上面加上anotation,这样在要打开这些toggle的时候就会比较容易。而且对于在不同的时间段打开哪些固定的功能,灵活性也更好,除了在代码上面使用anotation来体现,还将在story卡上面加上label来filter,在要移除toggle的时候就可以完全移除,而不会遗漏掉一些功能。
因为这个项目的上线规则的特殊性,所以要使用feature toggle这种方式。一般平时大家使用的产品的上线和更新都是使用的方法一。反正有需求才会有相应的解决嘛~