集中式版本控制系统:从svn到tfs
06年进公司的时候,我们没有使用版本控制系统,所有代码都在部门经理的电脑上放着,谁要改什么代码就过去要一份最新的,改好之后再放回去,感觉好原始。据说之前是用过一段时间微软的vss(visual.source.forge),曾经也搭建过vss服务器,但是中间不知道什么原因中断了,也就没有继续坚持了,可能是当时人还少,整个软件研发也就是10个人左右。所以没有使用版本控制也没有出什么大问题。
进公司之前,由于在matin fowler的《重构》中有提到版本控制系统,我就在自己电脑上搭建一个cvs服务器玩,完成一个小功能就提交一次,写好log,写错了再撤销回来,切实感觉到了有版本控制系统的好处,他就像是一个时光机器,可以让我回到之前的任何一个时间点。我再也不用不断的使用winrar压缩来做备份了。
所以在进公司半年,在摸清了部门的运转机制之后,就向领导提出提出希望可以引入版本控制系统。然后领导就同意了(没想到这么顺利),然后就是版本控制系统的选择问题,比如是继续使用当年的vss,还是寻找开源替代品,比如cvs或者其他的什么,现在已经不记得当年是如何选择的,不过我自己在使用cvs的时候确实是有一些不愉快的经历,库文件损坏。最终选择了svn,那会svn已经出来五年多了(2007),已经是比较稳定了,而且除了命令行,已经有各种插件/图形化工具可以使用。比如我们就使用visutal svn来搭建服务器,而使用tortoiseSVN来做客户端,然后再使用Visual SVN提供的vs的插件来解决和vs集成的问题,基本上整个流程就跑通了。然后就是组织培训,在组织内宣贯,这样前后大概过了一个季度,才陆续的将以前的代码迁移到svn服务器上。
在搭建服务器的过程中,一个比较明知的决定就是使用与服务器来同一用户管理,这样就可以同一svn和ftp两套系统的用户管理。visualSVN本身不支持域用户,所以需要另外搞个插件来做域用户与svn用户的映射,具体是什么有点不记得了。
这样服务器跑起来之后,稳定使用了三年多,随着公司的扩张,部门的人越来越多,新项目也越来越多,这时候问题就出来了,由于代码权限的问题,之前一直都是由部门经历兼职做配置管理员,由他负责svn的项目库创建,权限的分配等,现在有八九十号人的权限需要管理,差不多每天都有人需要申请svn的权限:创建项目库/分配老代码的读权限/写权限,等等。这样会占用他较多的时间,让一个部门经理来配置管理员的工作确实是有点浪费。
这个问题的核心在于svn不支持分级授权:比如如果给一个目录或者库指定了一个管理员,然后就可以由这个管理员来管理该库下面的所有目录的权限。
如果能够支持分级授权,那么部门经理的管理工作就会少很多,他只要负责创建库,然后分配管理员,其他的事情都可以由管理员来完成,这样就会比较理想。所以我们就开始重新寻找新的替代品。最终选择的是微软的TFS。之所以选择TFS一方面也是因为我们原来的那个bug管理系统不好用,也迫切希望能有一个新的替代品,而TFS是一个一体化的解决方案,可以在上面做版本控制,登记缺陷,做项目计划,发布会议通知,组织评审等,而且每个项目还可以有的门户。确实功能比较强大,然后,刚好他的版本控制系统有分级授权的功能。这就圆满了。
当然,搭建tfs服务器是一个比较麻烦的事情,这点去网上找相关文章吧,这里就不细说了,总之用微软一般就用全套,从他的服务器到数据库服务器到sharepoint到tfs服务器。
切换过去这两三年使用起来也还算平稳,没出什么大乱子。
另外提一下,不管是svn还是tfs,这种集中式的版本控制系统有一个问题,服务器如果挂了,大家就没法工作了,特别是我们是公司是两个中心模式,两个研发中心通过vpn相连,如果偶尔网络不好,那么另外一个研发中心的同事基本上就很多事都干不成了。这种问题对于中央式仓库没有什么很好的方法。而且目前网络中断的情况没有经常发生,所以也就没有成为内部主要矛盾。
集中式版本控制系统:从svn到tfs的更多相关文章
- linux进阶之SVN集中式版本控制系统篇
代码上线--版本控制系统 SVN 集中式版本控制系统 git 分布式版本控制系统 SVN是subversion的缩写,即版本控制系统,是一个开放 ...
- Git学习系列之集中式版本控制系统vs分布式版本控制系统
不多说,直接上干货! Linus一直痛恨的CVS及SVN都是集中式的版本控制系统,而Git是分布式版本控制系统,集中式和分布式版本控制系统有什么区别呢? 先说集中式版本控制系统,版本库是集中存放在中央 ...
- git-版本管理工具的介绍+发展史+分布式版本控制系统和集中式版本控制系统的区别
一.版本管理工具的介绍: 1.备份文件: 2.记录历史: 3.多端共享: 4.团队协作: 二.版本管理工具的发展史: 1.cvs: 集中式 1985: 2.svn: 集中式 2000: 3 ...
- 关于分布式版本控制系统Git与集中式版本控制系统SVN的区别
我觉得最最主要的区别就是:分布式Git主要是在本地有各个历史版本,在不联网的时候,也可以更新到最新版本和查看过去的版本,而集中式SVN是所有人都将版本上传到中央服务器,当出现断网情况的时候,用户只有一 ...
- 集中式(CVS、SVN)VS分布式(Git)
集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器.中央服务器就好比是一个图 ...
- 版本控制系统之SVN和GIT的区别
版本控制器的作用: 1. 可以协同代码管理,让多人开发代码得以实现. 2. 回归到以前的任何一个时间点的代码处(好比:开始写了很多代码,后面有修改了一些,突然IDE崩溃,但是发现还是以前的代码更好,这 ...
- SVN集中式版本控制器的安装、使用与常见问题汇总
SVN是Subversion的简称,是一个开放源代码的版本控制系统,它采用了分支管理系统,集中式版本控制器 官方网站:https://www.visualsvn.com/ 下载右边的服务器端,左边的客 ...
- SVN 集中式版本控制软件
简介: 目前流行的版本控制软件中,SVN ( 集中式版本控制 ) 算是使用范围更广.且使用时间更早的一款了,现在 git ( 分布式版本控制 ) 更火爆一点. 一.安装svn [root@localh ...
- 细说SVN集中式版本控制器
svn全称Subversion,实现多人开发同一个项目时,对源代码进行管理的工具.在公司里边,一个项目是由多人同时在开发,大家在本地自己电脑开发php代码,完毕后就commit上传给服务器运行. 如 ...
随机推荐
- Swift 中的函数
学习来自<极客学院:Swift中的函数> 工具:Xcode6.4 直接上基础的示例代码,多敲多体会就会有收获:百看不如一敲,一敲就会 练习一: import Foundation //函数 ...
- LeetCode 8 String to Integer (string转int)
题目来源:https://leetcode.com/problems/string-to-integer-atoi/ Implement atoi to convert a string to an ...
- sublime text 3 如何安装 package control
sublime text3 是个很好的编辑工具,前端程序员觉得她很好,我是在一次视频中看到她能帮助自动完成很多快捷的操作. 为什么安装? 如果想要给sublime text 中安装别的插件(这里称呼为 ...
- javascript 构造函数方式定义对象
javascript是动态语言,可以在运行时给对象添加属性,也可以给对象删除(delete)属性 <html> <head> <script type="tex ...
- window下使用vnc远程登录阿里云ECS/ubuntu图形界面
通常我们都使用putty.secureCRT等软件来远程登录linux系统,但这些软件仅提供字符终端界面,若要像windows的远程桌面连接那样登录linux的图形界面,我们可以使用VNC这类的软件. ...
- Centos7安装配置gitlab
Centos7安装配置gitlab 这篇文字我会介绍在Centos7上安装gitlab,配置gitlab的smtp,并且创建项目demo. sudo yum install openssh-serve ...
- Effective Java 17 Design and document for inheritance or else prohibit it
Principles The class must document its self-use of overridable methods. A class may have to provide ...
- Effective Java 76 Write readObject methods defensively
Principle readObject method is effectively another public constructor, and it demands all of the sam ...
- String to Integer (atoi)
Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input cases. ...
- 【软件使用】GitHub使用教程for VS2012
一直以来都想使用Git来管理自己平时积累的小代码,就是除了工作之外的代码了.有时候自己搞个小代码,在公司写了,就要通过U盘或者网盘等等一系列工具进行Copy,然后回家才能继续在原来的基础上作业.Cop ...