由于本人所在公司最近内网服务器的变更,有幸参与并配置了svn服务器,由于对svn
这种版本控制工具不是很熟悉,平时也就是update
和commit
,对于内部的一些结构特点
没有真正了解过,而且对于服务器端的配置也是一头雾水,但互联网的强大为我增添了很多助力,虽说初来乍到的走了不少弯路,但好在最后达成目标。废话不多说,下文就简单介绍一下svn的特点和其作为服务端的配置。
初识
SVN
,版本控制工具,(相信开发者们听到这个名词一定觉得很熟悉,类似于git,但与它不尽相同
)主要用于多人协作开发同一项目的场景,是Subversion
的简称,是一个开放源代码的版本控制系统。svn
作为服务器运行方式有两种,一为独立服务器,二为借助apache(这里仅为了解,不作过多介绍
)。
工作流程
svn是集中式代码管理,集中式管理的核心是服务器。下图简要说明svn
的工作流程:
图来源于网络
所有开发者在开始新一天的工作之前必须从服务器获取代码,然后开发,最后解决冲突,提交。所有的版本信息都放在服务器上。如果脱离了服务器,开发者便无法工作。
上图所示中文翻译如下:
morning
开发者从svn
服务器update
代码work
(coding || commit) -> (coding || commmit) -> (coding || commit)...before work
update -> 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
这个是我计算机名88
svn端口(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
选择当前项目可访问的用户组和用户名并配置其权限