Svn在工作中的实践感悟
Svn是一款管理项目代码的版本控制系统,是基于集中式的版本控制系统。在工作中,由于实际开发工作的需要,部门是使用Svn来管理日常的项目开发任务。使用这么长时间了,来谈谈对Svn的感悟。
首先,说下工作流程。根据实际的需求,将整个项目流程分为四部分:本地,ft,uat和正式环境。本地主环境要是提供给员工在开发测试使用的,是在个人电脑上进行的,ft环境是测试人员进行测试场所,uat环境是预发环境,一般是给产品使用,而正式环境就是线上啦。
在每个环境下,包括多个文件夹,每个文件夹下是一个具体的项目,它们共用一套php框架(Thinkphp框架)。由于公司业务繁忙,因此开发人员多大数十个。平时除了开发新的任务外,还必须维护旧的代码和旧平台的快速迭代任务。在使用的过程中,觉得Svn版本控制系统,最大的优点就是能够集中管理项目代码,控制权限分配。针对不同级别的开发者,赋予不同的权限,这样可以避免代码提交的混乱,管理好项目代码,确保开发工作的正常进行。但也有问题存在。最典型的就是,由于是集中式的管理,大家提交的代码merge,commit到master时,类似于一条直线(针对同一个项目来说),不能跳过merge,这样在合并代码的时候就会出现冲突。举个栗子说明。我在A项目下的B文件中进行新任务的开发,然后同事C接到Boss命令,说A系统出现了问题,需要去fix。正好,出问题的地方在B文件下(同文件下不同地方)。那么就会出现一种很尴尬的情形:由于我的代码是在C之前提交到ft上的,还在被测试。而C修改的代码需要紧急上线,修补线上问题。在merge代码时,要不,就直接把我的代码也一并merge,然后commit,要不就忽略掉我的这个版本。如果先合并C的版本,而我的版本不管,二者就会产生冲突。由于开发者多,有很大概率会遇到这个问题。所以boss在合并代码时,经常要协调我们解决冲突。那么,有没有什么办法来解决呢?答案是有的。
那就是Git版本控制系统,它是基于分布式的版本控制系统。将项目代码分为master分支, dev分支,fix分支(为方便说明,暂分为三个分支)。master分支属于主线,只能合并代码,线上使用。dev分支就是日常开发者使用,大家日常项目开发,任务迭代均在此分支下。fix分支专门用来解决线上bug问题的。平时开发,dev分支进行,测试无误后,merge到master分支。如果线上出问题了,就在fix分支进行,修改完成,然后merge到master分支上即可。fix分支不会影响到dev分支,避免了冲突
Svn在工作中的实践感悟的更多相关文章
- centos shell编程6一些工作中实践脚本 nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志 直接送给bc做计算 gzip innobackupex/Xtrabackup 第四十节课
centos shell编程6一些工作中实践脚本 nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志 直接送给bc做计算 gzip innobacku ...
- 《浏览器工作原理与实践》<10>作用域链和闭包 :代码中出现相同的变量,JavaScript引擎是如何选择的?
在上一篇文章中我们讲到了什么是作用域,以及 ES6 是如何通过变量环境和词法环境来同时支持变量提升和块级作用域,在最后我们也提到了如何通过词法环境和变量环境来查找变量,这其中就涉及到作用域链的概念. ...
- Git-【技术干货】工作中Git的使用实践
Git-[技术干货]工作中Git的使用实践 置顶 2019-09-17 21:02:16 web洋仔 阅读数 11444更多 分类专栏: Git 版权声明:本文为博主原创文章,遵循CC 4.0 B ...
- Mysql事务探索及其在Django中的实践(二)
继上一篇<Mysql事务探索及其在Django中的实践(一)>交代完问题的背景和Mysql事务基础后,这一篇主要想介绍一下事务在Django中的使用以及实际应用给我们带来的效率提升. 首先 ...
- Atitit 软件开发中 瓦哈比派的核心含义以及修行方法以及对我们生活与工作中的指导意义
Atitit 软件开发中 瓦哈比派的核心含义以及修行方法以及对我们生活与工作中的指导意义 首先我们指明,任何一种行动以及教派修行方法都有他的多元化,只看到某一方面,就不能很好的评估利弊,适不适合自己使 ...
- 2015年,从毕业到工作的几点感悟(Android开发新人)
锄禾日当午,汗滴禾下土. 2015年,从毕业到工作的几点感悟(Android开发): 多用三方类库:(成长经验:尽量不要自己手动实现网络上已经有的优秀开源类库的功能,例如: 网络请求:常见 ...
- 运维工作中常用到的几个rsync同步命令
作为一个运维工程师,经常可能会面对几十台.几百台甚至上千台服务器,除了批量操作外,环境同步.数据同步也是必不可少的技能.说到“同步”,不得不提的利器就是rsync. 下面结合本人近几年运维工作中对这一 ...
- 测试工作中ADB命令实战
作者:TT,<测试架构师>微信公众号作者 大家能点击进来,说明还是对ADB有所了解或听说过的,可能也会比较熟练的掌握了这些命令,下面描述如有不对的地方,欢迎指正和交流学习,请多指教! 一. ...
- 华为云对Kubernetes在Serverless Container产品落地中的实践经验
华为云容器实例服务,它基于 Kubernetes 打造,对最终用户直接提供 K8S 的 API.正如前面所说,它最大的优点是用户可以围绕 K8S 直接定义运行应用. 这里值得一提是,我们采用了全物理机 ...
随机推荐
- .NET Core实战项目之CMS 第十章 设计篇-系统开发框架设计
这两天比较忙,周末也在加班,所以更新的就慢了一点,不过没关系,今天我们就进行千呼万唤的系统开发框架的设计.不知道上篇关于架构设计的文章大家有没有阅读,如果阅读后相信一定对架构设计有了更近一部的理解,如 ...
- ASP.NET Core WebApi AspNetCoreRateLimit 限流中间件学习
AspNetCoreRateLimit介绍: AspNetCoreRateLimit是ASP.NET核心速率限制框架,能够对WebApi,Mvc中控制限流,AspNetCoreRateLimit包包含 ...
- OAuth 2.0 授权码请求
关于OAuth 2.0,请参见下面这两篇文章(墙裂推荐): <OAuth 2.0> <Spring Security OAuth 2.0> 纸上得来终觉浅,绝知此事要躬行.理论 ...
- Nancy in .NET Core学习笔记 - 路由
前文中,我介绍了Nancy的来源和优点,并创建了一个简单的Nancy应用,在网页中输出了一个"Hello World",本篇我来总结一下Nancy中的路由 Nancy中的路由的定义 ...
- Lucene 06 - 使用Lucene的Query API查询数据
目录 1 Query对象的创建(方式一): 使用子类对象 1.1 常用的Query子类对象 1.2 常用的Query子类对象使用 1.2.1 使用TermQuery 1.2.2 使用NumericRa ...
- C语言实现顺序栈的初始化&进栈&出栈&读取栈顶元素
/*顺序表实现栈的一系列操作*/ #include<stdio.h> #include<stdlib.h> #define Stack_Size 50 //设栈中元素个数为50 ...
- 补习系列-springboot-使用assembly进行项目打包
目录 springboot-maven插件 1. 项目打包Jar 2. 项目完整构建 3. 本地包依赖 参考文档 springboot-maven插件 springboot-maven插件 repac ...
- Hbase给初学者的“下马威”
自从成为架构师()之后,李大胖的学习动力似乎少了一些,尤其是今年(当然也有一些客观因素). 临近岁末,内心着实有些惭愧,决定学习一把大数据.跟随一下业界前沿(其实已经不是前沿了),梦想着有一天能够拥有 ...
- 阿里云HBase全新发布X-Pack 赋能轻量级大数据平台
一.八年双十一,造就国内最大最专业HBase技术团队 阿里巴巴集团早在2010开始研究并把HBase投入生产环境使用,从最初的淘宝历史交易记录,到蚂蚁安全风控数据存储.持续8年的投入,历经8年双十一锻 ...
- kubernetes进阶之六:StatefulSet & DaemonSet
StatefulSet(有状态): StatefulSet适合持久性的应用程序,有唯一的网络标识符(IP),持久存储,有序的部署,拓展,删除和滚动更新. 在Kubernetes系统中,Pod的管理对象 ...