如何维护标准版本以及N个拓展版本?

总结:

使用git来进行版本控制,里面有cherrypick的功能。还有项目开发做到组件化,把通用组件放到公司的maven仓库。

聊天记录:

广州 - D(1962264482) 16:46:28
【描述】 开发完成了一款应用,随着需求的改变,基于此版本会衍生出了多个版本。目前的做法是,每衍生出一个版本都会把标准版的代码下载到本地,然后基于标准版来完善代码,并重新再上传到SVN新建的目录。衍生的版本上传后没有了标准版的之前的日志。【问题】这么多的版本应该怎么维护,怎么记录,怎么做同步修改,怎么合并?比如想把拓展版本修改的代码顺便完善到标准版,该怎么做?大家有什么好的建议和工具推荐吗?亚纶(1106143842) 16:47:36
你听过组件化吗广州 - D(1962264482) 16:48:15
听过,但对此概念不太清晰Lebr(251600448) 16:48:40
用git古月(1932302089) 16:50:44
你这个拓展版本跟标准版本相比,差异在哪里广州 - D(1962264482) 16:51:43
拓展版本有3,4个,都是基于标准版拓展的。广州 - D(1962264482) 16:53:44
标准版不是不变的。拓展版本修改的同时,标准版本可能有另外的开发人员去修改。广州 - D(1962264482) 16:54:26
所以现在,如果每个版本要增加一个功能,标准版本和拓展版本都要跟着修改,工作量很大。广州 - D(1962264482) 16:55:14
标准版和拓展版本是分开上传到SVN的,没有主干和分支的概念。古月(1932302089) 16:56:06
productFlavors 不知道你有没有用过广州 - D(1962264482) 16:56:24
这倒没有小土豆(515353776) 16:56:52
同问,我们项目也有这种问题,想不到好的办法去解决 亚纶(1106143842) 16:56:53
就用组件化亚纶(1106143842) 16:57:09
把不同的地方分割出来亚纶(1106143842) 16:57:19
然后有一个总的流程使用亚纶(1106143842) 16:57:21
就好了亚纶(1106143842) 16:57:28
这就是我想的方案Lebr(251600448) 16:58:48
版本之间的差异主要在什么地方广州 - D(1962264482) 16:59:45
会拓展功能,或者修改基础版本和拓展版本@Lebr 小土豆(515353776) 17:00:17
我们的版本之间的差异可能是一些  网络请求地址改一下,logo改一下  ,然后就是增加一些特色功能  @广州 - D  目测我们遇到的问题差不多广州 - D(1962264482) 17:00:20
比如说基础版本出问题了,那么基础版本和拓展版本都要修改。古月(1932302089) 17:00:48
我们的应用也有很多定制版本,比如定制应用名、应用图标、或者页面有改动,就是使用的product Flavors亚纶(1106143842) 17:00:53
小土豆你可以用一下Build里面的配置亚纶(1106143842) 17:00:55
来做小土豆(515353776) 17:01:55有没有文档介绍什么的,我有点懵逼古月(1932302089) 17:02:30
http://blog.csdn.net/crazyman2010/article/details/53471162小土豆(515353776) 17:02:52
嗯,好的,我来看下哈广州 - D(1962264482) 17:03:54
product Flavors是共用一份代码去拓展版本吗?@古月 Lebr(251600448) 17:04:04
我们现在的方案是这样子的,是将差异做在了一个配置文件中,有一份公版代码,关于功能拓展,可以将代码写在公版代码中,然后可以通过配置文件来确定是否执行。如果代码差异较大,可以通过在配置文件中重写差异较大的类,在编译之前进行替换。亚纶(1106143842) 17:04:39
这就比较亚纶(1106143842) 17:04:40
恶心了亚纶(1106143842) 17:04:44
意味着Lebr(251600448) 17:04:48
虽然冗余代码很多,但贵在可行 亚纶(1106143842) 17:04:51
你管理公版代码的人古月(1932302089) 17:04:52
是滴@广州 - D 亚纶(1106143842) 17:05:00
必须知道所有的东西小土豆(515353776) 17:06:19
@古月  product Flavors 这个能不同的版本打出来apk是不同的包名吗古月(1932302089) 17:06:42
你可以配置包名的Lebr(251600448) 17:06:44
阔以广州 - D(1962264482) 17:06:47
@古月 product Flavors和@Lebr 说的原理应该差不多。但是这样会有一个问题,代码量会很大,不方便维护,下一个开发人员比较难接锅双击查看原图Lebr(251600448) 17:07:21
nono古月(1932302089) 17:08:03
所以拓展版本和标准版本差异太大的话就不好使亚纶(1106143842) 17:09:08
所以说还是组件化靠谱广州 - D(1962264482) 17:09:36
之前开发不是组件化的双击查看原图@亚纶 亚纶(1106143842) 17:09:59
那还是别动了Lebr(251600448) 17:12:44
话说拓展版本为啥不从标准版拉分支呢广州 - D(1962264482) 17:13:09
如果有一个版本控制工具可以做到这样的功能就好了
1.基于标准版本可以拓展多个版本
2.标准版本修改了,可以把修改的内容    选择   同步到指定的拓展版本
3.拓展版本新增的功能,可以选择性的同步到标准版本,同时标准版本可以仿照2步骤同步到指定的拓展版本。
4.每个版本都有记录,从标准版本开始。广州 - D(1962264482) 17:13:41
没有拉分支,版本太多了,不只是有两个@Lebr Lebr(251600448) 17:14:34
那这不就是git嘛。广州 - D(1962264482) 17:15:36
git玩得不太溜双击查看原图Lebr(251600448) 17:15:55
刚好有机会练练双击查看原图亚纶(1106143842) 17:16:04
cherrypick亚纶(1106143842) 17:16:14
这就需要你开发的时候广州 - D(1962264482) 17:16:16
git能做到修改基础版本,“选择”同步到指定的拓展版本么@Lebr
亚纶(1106143842) 17:16:18
要验证一下Lebr(251600448) 17:16:59
阔以啊 cherrypick把其他分支的提交合并到这个分支上广州 - D(1962264482) 17:17:05
好,我了解下。亚纶(1106143842) 17:17:11
这就需要你亚纶(1106143842) 17:17:22
每个commit记录是否可以用替换
17:17:26亚纶撤回了一条消息亚纶(1106143842) 17:17:30
一个掌握广州 - D(1962264482) 17:18:24
公司一直使用svn。使用git基本都是自己一个人开发,很少冲突,都是很基础的操作,没试过
cherrypick双击查看原图亚纶(1106143842) 17:18:47
不过我还是建议组件化广州 - D(1962264482) 17:19:47
组件化是指把每个功能抽成一个模块的意思么?@亚纶
亚纶(1106143842) 17:20:57
是的广州 - D(1962264482) 17:20:58
双击查看原图广州 - D(1962264482) 17:21:14
那你是怎么维护每个模块的广州 - D(1962264482) 17:21:37
如果别的项目要用到了这个模块,怎么依赖?广州 - D(1962264482) 17:21:56
是把模块放到仓库里面?广州 - D(1962264482) 17:22:04
双击查看原图广州 - D(1962264482) 17:23:24
如果直接从别的项目依赖模块,此模块出现问题了,那每个依赖该模块的项目都要修改双击查看原图亚纶(1106143842) 17:24:47
不是亚纶(1106143842) 17:25:07
主要是把业务分割开来亚纶(1106143842) 17:26:10
要说模块出问题了亚纶(1106143842) 17:26:17
那你网络出问题了亚纶(1106143842) 17:26:18
咋办广州 - D(1962264482) 17:27:32
双击查看原图广州 - D(1962264482) 17:29:02
如果一款应用有语音识别模块,如何把这个模块做到组件化,可以从代码的角度说下么,不太清晰,谢谢双击查看原图@亚纶 亚纶(1106143842) 17:30:03
那你就把语音语音识别做成一个Module就好了
17:30:39
你撤回了一条消息广州 - D(1962264482) 17:32:10
Module是放到哪里的,怎么做到修改Module,其它依赖改Module的项目自动修改?广州 - D(1962264482) 17:32:14
双击查看原图亚纶(1106143842) 17:32:50
这么说吧亚纶(1106143842) 17:33:13
相当于你有一个多个Module的Project广州 - D(1962264482) 17:35:03
其实我主要想问的是,怎么维护Module,通过什么方式双击查看原图亚纶(1106143842) 17:37:06
路由广州 - D(1962264482) 17:38:19
好像之前在群里看过"路由"这个词,没怎么注意双击查看原图广州 - D(1962264482) 17:38:57
是要把Module放到公司的Maven仓库?亚纶(1106143842) 17:41:05
是的亚纶(1106143842) 17:41:10
我在路上亚纶(1106143842) 17:41:21
你先看看组件化亚纶(1106143842) 17:41:24
的概念广州 - D(1962264482) 17:44:20
好,谢谢

聊天记录 --- 如何维护标准版本以及N个拓展版本相关推荐

  1. linux6.3支持gcc版本,Linux编程中GCC对C++标准支持和如何选择GCC版本使用

    关注公众号cpp_coder,学习更多实用技术. [说明]本公众号纯属于个人,没有商业运作.推送文章是C++技术网原创文章,供大家学习.希望大家多多支持,多多推荐.我们所有的推送,没有收入一分钱,只是 ...

  2. ITSS是什么?申请ITSS信息技术服务运行维护标准符合性证书有什么用?

    随着经济的发展,信息技术行业不断地快速提升,使得ITSS信息技术服务运行维护标准符合性证书成为信息技术行业不可或缺的资质,而昌旭咨询作为中国领先的IT企业管理咨询服务商,为越来越多的企业提供了ITSS ...

  3. oracle oaf界面个性化,个性化EBS标准OAF页面(EO,+SQL全版本).doc

    个性化EBS标准OAF页面(EO,SQL全版本) 个性化EBS标准OAF页面 目录 个性化EBS标准OAF页面1 目录1 替换VO添加客户化属性(VO基于EO的版本)3 实例背景3 本例的页面:3 E ...

  4. Linux学习笔记5——什么是Linux:Linux 核心版本与 Linux 发布商版本、如何学linux

    一.Linux是什么?它怎么来的? 1,linux是什么? 不用多说,linux就是操作系统,但我在培训的时候讲课的老师强调,linux不是操作系统而是内核,kernel...从操作系统的概念来看,操 ...

  5. 【以太坊】web3.js的1.0版本和0.2.0版本的安装及区别

    一.前言 博主在安装web3.js的时候,偶然间安装了不同版本的web3.js,API操作也不相同,虽然都能达到目标,但是到底区别在哪呢?网上查找半天并没有人专门总结一下这块,所以今天斗胆总结一下,也 ...

  6. linux 下查看应用版本信息,Linux下查看版本信息

    Linux下如何查看版本信息, 包括位数.版本信息以及CPU内核信息.CPU具体型号等. 1.# uname -a   (Linux查看版本当前操作系统内核信息) 2.# cat /proc/vers ...

  7. 服务器 虚拟机版本,VMWARE-版本比较各版本区别

    <VMWARE-版本比较各版本区别>由会员分享,可在线阅读,更多相关<VMWARE-版本比较各版本区别(1页珍藏版)>请在人人文库网上搜索. 1.VMWARE 版本比较:V4各 ...

  8. 软件版本阶段与语义化版本(SemVer)

    文章目录 软件版本阶段 语义化版本 FAQ npm中package.json文件依赖项版本号 参考 软件版本阶段 Alpha版:预览版或内部测试版,一般不向外部发布,会有很多 bug. Beta版:公 ...

  9. eclipse选择java版本_使用 Eclipse 开发版本选择和下载说明

    现在越来越多的人开发使用 IDEA,使用 Eclipse 开发的已经渐渐变少了,这篇就简单介绍下 Eclipse 的版本选择和下载,供目前还在坚守使用 Eclipse 开发的同胞们~ Eclipse ...

最新文章

  1. Linux如何配置Swap分区
  2. LSD快速直线检测的原理概要及OpenCV代码实现(CV类LineSegmentDetector)
  3. ubuntu 12.04 开启root
  4. 【渝粤教育】国家开放大学2018年秋季 0267-21T摄影技术 参考试题
  5. tk-mapper 生成器
  6. 【UVA - 11383】Claw Golden Tiger (二分图最优匹配,KM算法原理)
  7. 计算机开机时间停在上次关机,怎么在电脑开机的时候查看上次关机前的操作
  8. Java笔记-Java中备忘录模式
  9. chkconfig命令及的使用 与linux的七个运行级别
  10. [转载]Badboy使用教程
  11. css3 烟 蚊香_CSS3 冒烟的管道 | 烟囱
  12. PySpark : Structured Streaming
  13. Clover 引导 Windows 及 Linux 双系统
  14. netbackup备份mysql_NBU网络备份大全之数据库备份与恢复
  15. 三角形箭头向右的_向右三角形特殊符号
  16. 几款移动跨平台App开发框架比较
  17. [openwrt]:斐讯K3C OPCC+中大H3C校园网认证配置指南(一)
  18. 操作系统 | 实验五 页面置换算法
  19. transform三大属性之scale(缩放)
  20. VB.NET中IIF和IF使用效率分析

热门文章

  1. MySQL核心参数含义的源码解析
  2. 获取位置_原神手游新兵的徽记哪里刷 新兵的徽记获取位置分享
  3. 试用开源网管软件Zenoss
  4. python将输出结果写入csv_python - 将输出写入CSV文件[处于保留状态] - 堆栈内存溢出...
  5. 计算机租赁服务费,租赁电脑行业潜规则大曝光
  6. 解析国外游戏建模《绝地求生》:炮塔楼制作细节过程
  7. Microsoft Math v3.0.1184.1020 - 微软超强计算器
  8. Noah Mt4跟单系统制作第五篇 Mt4TradeApi挂单篇
  9. C++11标准下的单例设计模式
  10. 人工智能Java SDK:超分辨(4倍),可以提升图片的分辨率,模糊变清晰