搭建SVN仓库

背景

在个人开发中经常会遇到版本混乱,中间版本丢失、Bug无法复现的情况,导致陷入重复工作和耗时解决低级错误。在多人协同开发时也会遇到版本问题。为此需要引入版本控制思想。版本控制是软件配置管理的重要一环,有时候会极大影响项目进度和成败。

Subversion是个优秀的版本控制软件,在部门开发工作中就使用了这个工具。它分为Windows客户端程序TortoiseSVN和服务器端SVNServe两部分。客户端集成在Windows文件浏览器中,使用非常方便。Svnserve是Subversion的简易版本的联网服务器,它速度快,使用简单,适合在局域网内使用,也是我们部署的使用方式。
本文总结了SVN的安装和配置工作。

安装和设置

服务器也安装在Windows机器上,SVN消耗资源较少,普通开发PC机就可以胜任。个人开发者可以将开发机器兼用作服务器和客户机。服务器的一些操作也可以借助TortoiseSVN实现,因此既要安装服务器程序又要安装TortoiseSVN软件。
所需要的安装文件有服务器端软件svn-1.4.5-setup.exe、TortoiseSVN软件TortoiseSVN-1.4.8.12137-win32-svn-1.4.6.msi、汉化工具LanguagePack-1.4.8.12137-win32-zh_CN.exe。按上述顺序依次双击安装即可。推荐安装完成后重启机器。

安装完成后,在Windows文件浏览器的任意目录下空白处点击右键,都可以发现快捷菜单里多出两项“SVN Checkout…”和“TortoiseSVN”。这说明TortoiseSVN安装成功。
安装完成后需要设置TortoiseSVN,主要有语言选项和全局忽略样式配置。点击快捷菜单TortoiseSVN->Settings,在General中将语言改为中文,Global ignore pattern中输入需要忽略的文件类型,然后点击“确定”即可。

建立项目仓库

使用SVN首先要确立一个仓库。先建立一个文件夹,如E:\svn-repos,在文件夹上点击右键选择快捷菜单TortoiseSVN->在此创建版本库,在弹出的对话框中选择“本地文件系统”,点击确定,然后就会弹出版本创建成功的提示框。
进入E:\svn-repos目录,可以发现多出许多文件和文件夹。需要关心的是conf文件夹下的几个文件,这在后面仓库配置中会用到。

加入项目开发目录

一个仓库可以提供给多个项目使用。接下来要在仓库中建立我们自己项目的开发目录。这可以在服务器中完成,也可以在客户端完成。
以服务器为例,在E:\svn-repos文件夹上点击右键,选择快捷菜单TortoiseSVN->版本库浏览器,弹出窗口中出现fille:///E:/svn-repos文件夹,在上面点击右键选择“创建文件夹”,输入项目名如prj1,输入日志,就可以看到多出一个下级目录prj1。再依次在prj1下建立trunk、branches、tags三个文件夹,用于主干、分支和标签。这样项目开发目录就建立成功了。

项目仓库基本配置

接下来要对仓库做一些基本的配置。
项目仓库的conf文件夹下有三个文件:svnserve.conf、authz及passwd。svnserve.conf文件是仓库配置的主文件,authz文件定义开发人员的访问权限,passwd文件保存了开发人员的登录密码。

svnserve.conf

svnserve.conf为配置的主文件。
文件中注释以“#”开头。仔细阅读注释就能了解基本用法。使用时需要打开[general]前的注释,并且让[general]位于行首。
配置项主要由以下几部分组成:
anon-access:非用户验证配置项。如果此项注释掉,非验证的用户是可以看到的,但无法修改;none则无法看到;read可以看到,但要通过验证后才可以修改;write可看可改。
auth-access:验证用户配置项。当auth-access = write 时,此项注释掉或值为none,验证用户无法登录;如果设为read,验证用户可读不可写。如果设为write,验证用户可读写。
password-db = passwd :passwd是个文件名,存放登录用户名与密码,安装后默认为passwd。
authz-db = authz :authz是个文件,存放登录权限,安装后默认authz。
realm = My First Repository:My First Repository是用户定义的名字,是所谓的“认证命名空间”。内容不限,应该是随便输入的,没有影响。

authz

authz用来存放用户的登录权限。
开发中,往往同一项目组内有相同的访问权限。SVN可以定义项目组,在[groups]下,使用“组名= 组成员名,…,组成员名”的方式。
[groups]
group1 = zhangsan,lisi
定义组多用户访问权限时,在“[]”内填写仓库中预控制权限的目录路径,在下一行用“@+组段中定义的组名”表示组多用户,后加访问权限。
[/prj1]
@ group1 = rw ## @后面的名字必须是组段中定义的组,可以设多个多用户访问段
定义单用户的访问权限时,与定义组用户相似,只是将“@+组段中定义的组名”直接用用户名代替即可。
[/]
zhangsan = rw

passwd

passwd为用户登录密码的存储文件,即为在svnserve.conf中password-db指向的文件。
语法很简单,即“用户名=密码”。
如定义用户zhangsan的登录密码为1234,lisi的登录密码为abcd,则定义如下所示:
zhangsan =1234
lisi = abcd

启动svnserve

运行命令提示符窗口,键入
start svnserve –daemon –root E:\svn-repos
点击Enter,则启动了svnserve,一个新的标题为svnserve.exe的窗口就会打开。如果有防火墙拦截,需要设置防火墙放行。其中–daemon选项是让svnserve启动时必须要指定的一个古怪选项;–root参数选择了允许访问的项目仓库名。

测试

客户端第一次使用项目时需要将其签出。新建一个文件夹,右键点击选择“SVN检出”,然后输入版本库URL,如果服务器在本机,则使用环回地址如svn://127.0.0.1/svn-repos/prj1,如果在其他机器上,则使用其IP地址如svn://10.103.1.8/svn-repos/prj1,点击确认即可。必要时输入用户名和密码。
在本地新建一个文件,增加到SVN再提交,如果提交成功则SVN配置无误。

你可能感兴趣的:(SVN,版本控制)