由于本人所在公司最近内网服务器的变更,有幸参与并配置了svn服务器,由于对svn这种版本控制工具不是很熟悉,平时也就是update和commit,对于内部的一些结构特点没有真正了解过,而且对于服务器端的配置也是一头雾水,但互联网的强大为我增添了很多助力,虽说初来乍到的走了不少弯路,但好在最后达成目标。废话不多说,下文就简单介绍一下svn的特点和其作为服务端的配置。
初识
SVN,版本控制工具,(相信开发者们听到这个名词一定觉得很熟悉,类似于git,但与它不尽相同)主要用于多人协作开发同一项目的场景,是Subversion的简称,是一个开放源代码的版本控制系统。svn作为服务器运行方式有两种,一为独立服务器,二为借助apache(这里仅为了解,不作过多介绍)。
工作流程
svn是集中式代码管理,集中式管理的核心是服务器。下图简要说明svn的工作流程:

图来源于网络
所有开发者在开始新一天的工作之前必须从服务器获取代码,然后开发,最后解决冲突,提交。所有的版本信息都放在服务器上。如果脱离了服务器,开发者便无法工作。
上图所示中文翻译如下:
morning开发者从svn服务器update代码work(coding || commit) -> (coding || commmit) -> (coding || commit)...before workupdate -> commit yourself code
以上就是经典的svn流程。
优缺点
本文既然是说SVN的,自然就少不了SVN的优缺点,是的,每种工具都有优缺点,世界上并不存在完美之物。
优点
管理方便,逻辑明确,符合一般人思维
易于管理,集中式管理更能保证服务器安全性
代码一致性度非常高
适合人数不多的项目开发
安全性:
SVN站在更高层次上对安全产品,从系统和控制的角度进行了有机和无隙的整合。
缺点
对于服务器的依赖性太大(如果不能连接服务,就不能进行
update || commit操作)平时开发过程中,稍有不注意就会出现代码冲突的问题,好几次都跳了这个坑
综上所述,利用SVN开发优点还是蛮多的,缺点嘛,其实也不是不能避免,只要能够善于利用它的优点做事情就ok了。
下载与安装
下载
这里需要下载两个文件,一个是VisualSVN server的服务端,另一个则是TortoiseSVN的客户端,这两个搭配起来用,相得益彰嘛。下载地址:VisualSVN和TortoiseSVN。在页面的最下方,滚轮一直滚到最下方就是。
上图点击对应的链接去下载即可,如下:


安装

安装1

安装2

安装3

安装4

安装5
启动与基本操作
VisualSVN Server服务端工具主界面:

创建仓库
以下高能,开启图文并茂模式:






创建用户


创建用户组





拉取仓库项目
上面对于SVN的操作流程有了简要介绍,这里再详细介绍一下:
拉取仓库文件 首先获得项目仓库地址,SVN客户端(
TortoiseSVN)安装完之后在本地项目目录下(或者说计算机任意位置都行)右键点击菜单里会有SVN Checkout这个栏目,点击,输入仓库项目地址,完成拉取拉取完项目之后,在项目中进行添加文件或者修改文件,
update之后,右键commit上传
获取仓库项目路径

复制到粘贴板,打开checkout界面,输入刚刚复制的仓库项目地址,点击ok


更新项目文件到svn仓库,commit操作


然后我们去另一个目录下,check仓库项目:


以上,基本的个人svn服务搭建已完成。
多人协同开发
上面说明的是以个人计算机为svn服务的搭建,相信也能看到我的svn仓库的地址是http://clearNaturn:88/svn/test/,这个URL好像哪里有点不对,下面做出解释:
clearNaturn这个是我计算机名88svn端口(PS:80端口一般会被web服务(apche、nginx等)占用)
那么如果多人开发的时候,显然用我们这个URL去Checkout仓库项目显然是不行的,如果要做到被多人同时调用,那么在内网或者在外网中就要做到以IP的形式进行调用,我们修改其中的配置项即可:
打开
VisualSVN server的主界面,右键点击左边栏VisualSVN server(local)->properties或者点击操作->properties在弹出的界面中选中
Network,修改Server name为本机IP即可。

本地ckeckout一下:

至此,以VisualSVN server为服务端的svn配置已完成,根据步骤走一步一步来,相信是傻子都会了,哈哈哈~
仓库项目同步更新到指定目录
老实讲,以上所陈述的东西真的是网上一搜一大把教程,接下来才是重点。svn仓库项目同步更新到指定目录,相信很多地方也都可以用得到(不知道用得到的地方多不多,反正我司是用到了),也不用测试者update到本地测试了,总之是一个很好的辅助功能。下面来介绍一下实现这一目的所需要的步骤:
利用
hook(钩子)功能利用
批处理功能找到仓库所在的目录,打开要实现同步更新的项目目录,进入
hooks文件目录,新建一个post-commit.bat作为批处理文件post-commit.bat批处理文件里就写svn checkout 仓库项目目录 要同步更新的本地项目路径 --username 用户名 --password 密码举个
post-commit.bat文件具体要写什么的例子:svn checkout http://127.0.0.1:88/svn/test/ E:\svn\test --username cmh --password cmh
这样就大功告成了。
拓展
指定仓库项目权限
在公司中,对某个项目的操作应该不会只针对某一类人(开发人员),如果公司还有测试人员的话,那么他们就应该没有写入文件的权限,只有读取文件的权限,开发人员才具有读/写权限,所以为了减少不必要的麻烦,VisualSVN Server也具备这样的功能,为某个项目分配相应的人员或用户组,并指定其具体权限:
打开的VisualSVN Server界面,选择仓库中的某一个项目,右键点击并选中properties

选择当前项目可访问的用户组和用户名并配置其权限
