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在工作中的实践感悟的更多相关文章

  1. centos shell编程6一些工作中实践脚本 nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志 直接送给bc做计算 gzip innobackupex/Xtrabackup 第四十节课

    centos   shell编程6一些工作中实践脚本   nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志  直接送给bc做计算  gzip  innobacku ...

  2. 《浏览器工作原理与实践》<10>作用域链和闭包 :代码中出现相同的变量,JavaScript引擎是如何选择的?

    在上一篇文章中我们讲到了什么是作用域,以及 ES6 是如何通过变量环境和词法环境来同时支持变量提升和块级作用域,在最后我们也提到了如何通过词法环境和变量环境来查找变量,这其中就涉及到作用域链的概念. ...

  3. Git-【技术干货】工作中Git的使用实践

    Git-[技术干货]工作中Git的使用实践 置顶 2019-09-17 21:02:16 web洋仔 阅读数 11444更多 分类专栏: Git   版权声明:本文为博主原创文章,遵循CC 4.0 B ...

  4. Mysql事务探索及其在Django中的实践(二)

    继上一篇<Mysql事务探索及其在Django中的实践(一)>交代完问题的背景和Mysql事务基础后,这一篇主要想介绍一下事务在Django中的使用以及实际应用给我们带来的效率提升. 首先 ...

  5. Atitit 软件开发中 瓦哈比派的核心含义以及修行方法以及对我们生活与工作中的指导意义

    Atitit 软件开发中 瓦哈比派的核心含义以及修行方法以及对我们生活与工作中的指导意义 首先我们指明,任何一种行动以及教派修行方法都有他的多元化,只看到某一方面,就不能很好的评估利弊,适不适合自己使 ...

  6. 2015年,从毕业到工作的几点感悟(Android开发新人)

    锄禾日当午,汗滴禾下土.       2015年,从毕业到工作的几点感悟(Android开发): 多用三方类库:(成长经验:尽量不要自己手动实现网络上已经有的优秀开源类库的功能,例如: 网络请求:常见 ...

  7. 运维工作中常用到的几个rsync同步命令

    作为一个运维工程师,经常可能会面对几十台.几百台甚至上千台服务器,除了批量操作外,环境同步.数据同步也是必不可少的技能.说到“同步”,不得不提的利器就是rsync. 下面结合本人近几年运维工作中对这一 ...

  8. 测试工作中ADB命令实战

    作者:TT,<测试架构师>微信公众号作者 大家能点击进来,说明还是对ADB有所了解或听说过的,可能也会比较熟练的掌握了这些命令,下面描述如有不对的地方,欢迎指正和交流学习,请多指教! 一. ...

  9. 华为云对Kubernetes在Serverless Container产品落地中的实践经验

    华为云容器实例服务,它基于 Kubernetes 打造,对最终用户直接提供 K8S 的 API.正如前面所说,它最大的优点是用户可以围绕 K8S 直接定义运行应用. 这里值得一提是,我们采用了全物理机 ...

随机推荐

  1. BBS论坛(十四)

    14.1注册完成跳到上一个页面 (1)front/form.py # front/forms.py __author__ = 'derek' from ..forms import BaseForm ...

  2. solr之环境配置四

    Solr链接数据库(mysql,mssql) 一.链接mysql 1.使用DataImportHandler导入并索引数据,配置 $SOLR_HOME\core0\conf\solrconfig.xm ...

  3. 将Maple输出的LaTex导出到txt文件

    将Maple输出的LaTex导出到txt文件 1. 生成LATEX Maple可以把它的表达式转换成LATEX, 使用latex命令即可: > latex(x^2+y^2=z^2); {x}^{ ...

  4. Android Hybrid App自动化测试实战讲解(基于python)

    1.Hybrid App自动化测试概要 什么是Hybrid App? Hybrid App(混合模式移动应用)是指介于web-app.native-app这两者之间的app,兼具“Native App ...

  5. Chapter 5 Blood Type——28

    Mike came through the door then, glancing from me to Edward. 然后Mike从门里走出来,看了一眼我和Edward The look he g ...

  6. Typora - Markdown 语法说明

    Typora 是 Windows 下最好的 Markdown 编辑器!不接受反驳~ 导图 快捷键标题:Ctrl + 数字 Ctrl + 123456 代表 H1-H6 级标题Ctrl + 0 恢复普通 ...

  7. leetcode — subsets-ii

    import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * Source : https://o ...

  8. mysqladmin实用工具

    mysqladmin命令行实用工具是命令行工具套件中的重量级工具.这个工具可以执行很多选项和工具(被称为命令). 因为这个实用工具是从命令行启动运行的,它使得管理员可以编写一系列操作脚本,这比直接运行 ...

  9. redis常见错误处理

    --1]当内存不足引起  redis出错 先尝试下列语句,指定redis使用内存 redis-server.exe redis.windows.conf --maxheap 200mredis-ser ...

  10. [MySQL] mysql的事务隔离和幻读和死锁问题

    1.系统要通过严格的ACID测试,ACID表示原子性/一致性/隔离性/持久性原子性:一个事务必须被视为一个不可分割的最小工作单元一致性:数据库总是从一个一致性的状态转换到另外一个一致性的状态隔离性:通 ...